您的 App Engine 應用程式可包含 php.ini 檔案,可讓您用來自訂 PHP 解譯器指令的行為。
關於 php.ini
php.ini
檔案應放在應用程式的基礎目錄中 (與 app.yaml
檔案相同的目錄)。系統會在 PHP 解譯器初始化時載入這個檔案,並且之後才會執行應用程式的程式碼。
此檔案所遵循的語法與其他 .ini 檔案的語法相同。簡單的範例如下:
; This is a simple php.ini file on App Engine ; ; This is a directive set to "On" widget_compression = "On"
核心指令清單及其可變更模式值已發布在 php.net 上。擴充功能處理的 php.ini
指令已在擴充功能的各自頁面中記錄。
您可覆寫具備下列其中一個可變更模式值的任何 PHP 指令:
PHP_INI_SYSTEM
PHP_INI_ALL
PHP_INI_PERDIR
請注意,某些功能已在 PHP 的 App Engine 實作中停用。以這些功能為目標的指令不會產生任何作用。
extension
指令可用來啟用一組
可動態載入的擴充功能。
App Engine 的 PHP 指令
下列指令專屬於 App Engine 環境,並且可包含在 php.ini 檔案中。
google_app_engine.enable_curl_lite
:設為「1」時即會啟用「cURL 精簡版」,這是 App Engine 專屬的內建 cURL 版本。「cURL 精簡版」的使用方式與標準版 cURL 函式完全相同,但精簡版不會呼叫通訊端,而是在背景中呼叫網址擷取。因此,沒有網址擷取對等項目的函式會傳回CurlLiteMethodNotSupportedException
。注意事項:應用程式無法同時啟用「curl.so」擴充功能和「cURL 精簡版」,因為後者會導致 cURL 函式超載。
google_app_engine.enable_functions
- 在 App Engine 中軟性停用的函式,但可使用此指令重新啟用。以逗號分隔字串的形式列出函式名稱:google_app_engine.enable_functions = "phpversion, phpinfo"
google_app_engine.allow_include_gs_buckets
- 允許應用程式使用include
或require
陳述式,搭配儲存在 Google Cloud Storage 中的檔案。注意:您可以為預設值區使用
#default#
,這個資料值會在執行階段中自動替換為目前的預設值區名稱。例如,您可以使用逗號分隔的字串,列出預設值區,以及包含檔案的
bucket_1
和bucket_2
值區:google_app_engine.allow_include_gs_buckets = "#default#, bucket_1, bucket_2"
您也可以指定要納入的值區和檔案路徑,例如:
google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"
系統在檢查會從 Google Cloud Storage 納入哪些檔案時,會將提供的路徑視為前置字串;此前置字串必須符合檔案名稱的開頭,才能納入或要求該檔案。舉例來說,以上述路徑範例為例,提供的路徑可讓使用者納入來自
gs://bucket_1/path_x/...
的檔案,因為前置字串相符,但無法納入來自gs://bucket_1 or gs://bucket_1/path_y/
的檔案,因為前置字串不相符。如果上傳的檔案已移至允許的包含資料夾,系統會產生警告,提醒使用者可能遭到 LFI 攻擊。發生這種情況時,您應考慮使用限制更嚴格的路徑。
注意:路徑視同檔案的前置字串,因此也能包含特定檔案,例如
google_app_engine.allow_include_gs_buckets = "bucket_1/path_x.ext", "bucket_2/path_z/some_file.ext
。google_app_engine.disable_readonly_filesystem
:根據預設,PHP 應用程式無法寫入檔案系統。將此指令設為「1」會解除本機開發環境的限制。 不過,這項設定不會套用至在實際工作環境中運作的應用程式,因為這類應用程式均須符合沙箱限制。