在 Google App Engine PHP 5 標準環境中,部署應用程式的本機檔案系統為非寫入性質。這可為應用程式的安全性和可擴充性帶來保障。
不過,如果您的應用程式需要在執行階段寫入及讀取檔案,PHP 5 標準環境會提供內建的 Google Cloud Storage 串流包裝函式,讓您能夠使用多數的標準 PHP 檔案系統函式來讀取及寫入檔案。
將檔案寫入 Google Cloud Storage 的方法有兩種:
- 從應用程式寫入檔案
- 簡易檔案寫入
- 串流檔案寫入
- 讓使用者上傳檔案至 Google Cloud Storage
從應用程式寫入檔案
如要從應用程式寫入檔案,您可以一次寫入整個檔案,也可以透過串流方式寫入檔案。
Cloud Storage 適用的 App Engine 串流包裝函式內建在執行階段中,會在您提供名稱開頭為 gs://
的檔案時使用。包裝函式規定值區或檔案物件的名稱需採以下格式:
gs://bucket_name/desired_object_name
簡易檔案寫入
如要從應用程式將資料寫入 Google Cloud Storage,請使用 file_put_contents
,並使用有效的 Cloud Storage URL。例如:
其中 my_bucket
是經過妥善設定的 Google Cloud Storage 值區。
或者,如果您想使用串流選項來提供權限、快取和/或中繼資料選項,您可以依以下方式寫入檔案:
串流檔案寫入
或者,您也可以使用 fopen
/fwrite
以串流方式寫入資料:
請注意,使用串流時,資料會以較小的區塊沖洗至 Google Cloud Storage。您不需要事先知道待寫入資料的總長度,系統會在檔案資源關閉時計算。
以上是寫入檔案的基本方式。如需特殊應用實例和更進階的檔案管理方式,請參閱列在後續步驟一節中的主題。
刪除檔案
如果您想刪除檔案本身,請使用 PHP unlink() 函式。
使用者上傳
如要進一步瞭解這個檔案寫入選項,請參閱讓使用者上傳檔案一文。
讀取檔案
如要進一步瞭解如何從 Google Cloud Storage 讀取檔案,請參閱提供檔案的公開存取權一文。
設定和需求
您必須啟用 Google Cloud Storage 並建立值區。詳情請參閱設定一文。
支援的 PHP 5 檔案系統函式
您可以使用許多常用的 PHP 5 檔案函式和檔案資訊與目錄函式。如需受支援 PHP 函式的完整清單,請參閱 PHP 5 檔案系統函式支援一文。
Cloud Storage Tools API 提供的擴充功能
Google Cloud Storage 串流包裝函式可讓您使用 PHP 檔案系統呼叫。不過,如要充分利用 Cloud Storage,您可能需要使用擴充功能。您可以透過 Cloud Storage Tools API 使用這些擴充功能。
這個 API 提供一組函式,不但可用來提供檔案和圖片,而且支援其他實用公用程式。我們會在其他主題頁面說明其中幾種函式。
是否有其他方法可讀取及寫入檔案?
App Engine PHP 5 應用程式必須使用 Cloud Storage 串流包裝函式,在執行階段寫入檔案。不過,如果應用程式需要「讀取」檔案,且這些檔案屬於靜態性質,您可以選擇使用 PHP 檔案系統函式 (例如 file_get_contents
),讀取透過應用程式上傳的靜態檔案。
例如:
其中,指定的路徑必須是相對於存取用指令碼的路徑。
將應用程式部署到 App Engine 時,您必須上傳應用程式子目錄中的檔案,並且設定 app.yaml
檔案,這樣應用程式才能存取這些檔案。詳情請參閱「使用 app.yaml
設定 PHP 5 應用程式」。
請注意,如果您在 app.yaml
設定中使用靜態檔案或目錄處理常式 (static_files
或 static_dir
),您必須將 application_readable
設為 true,否則應用程式無法讀取檔案。不過,如果檔案是由 script
處理常式提供,則不必這樣做,因為這些檔案預設可供指令碼處理常式讀取。
後續步驟
請參閱下列主題,進一步瞭解如何使用 Cloud Storage Tools API:
- 設定:快速設定操作說明。
- 提供檔案的公開存取權:瞭解如何讓使用者透過瀏覽器下載檔案。
- 讓使用者上傳檔案:瞭解如何直接透過瀏覽器上傳檔案,略過您的應用程式。
- 處理圖片檔案:瞭解管理及提供圖片的最佳方式。
- 進階檔案管理一文涵蓋下列內容:
- 權限、快取和中繼資料串流選項。
- PHP 檔案系統函式支援。
- 使用 PHP
include
和require
。 - 讀取及寫入自訂中繼資料。
- 快取檔案讀取。