Cloud Run 函式會在環境中執行,該環境包含作業系統版本、附加套件、語言支援,以及支援和叫用函式的 PHP Functions Framework 程式庫。這個環境會以語言版本識別,稱為執行階段 ID。
函式準備
您可以直接從 Google Cloud 控制台準備函式,也可以在本機撰寫函式並上傳。如要準備本機電腦以進行 PHP 開發作業,請參閱「在 Google Cloud上使用 PHP」。
支援的 PHP 執行階段和基本映像檔
執行階段 | 執行階段 ID | 堆疊 | 執行階段基礎映像檔 |
---|---|---|---|
PHP 8.4 | php84 | google-22-full (預設) | google-22-full/php84 |
PHP 8.3 | php83 | google-22-full (預設) | google-22-full/php83 |
PHP 8.2 | php82 | google-22-full (預設) | google-22-full/php82 |
PHP 8.1 | php81 | google-18-full | google-18-full/php81 |
PHP 7.4 | php74 | google-18-full | google-18-full/php74 |
選取執行階段
您可以在部署期間,針對函式選取其中一個支援的 PHP 執行階段。
您可以使用 Google Cloud 控制台或 gcloud CLI 選取執行階段版本。按一下分頁標籤,瞭解如何使用自選工具:
gcloud
部署函式時,請使用 --base-image
標記為函式指定 PHP 基礎映像檔。例如:
gcloud run deploy FUNCTION \
--source . \
--function FUNCTION_ENTRYPOINT \
--base-image php84
取代:
將 FUNCTION 改為您要部署的函式名稱。您可以完全省略這個參數,但這樣系統會提示您輸入名稱。
FUNCTION_ENTRYPOINT,並在原始碼中輸入函式的進入點。這是 Cloud Run 在函式執行時執行的程式碼。這個旗標的值必須是來源程式碼中存在的函式名稱或完整類別名稱。
如需使用 gcloud CLI 部署函式的詳細操作說明,請參閱「在 Cloud Run 中部署函式」。
主控台
在 Google Cloud 控制台中建立或更新 Cloud Run 函式時,您可以選取執行階段版本。如需部署函式的詳細操作說明,請參閱「在 Cloud Run 中部署函式」。
如要在建立函式時,透過 Google Cloud 控制台選取執行階段,請按照下列步驟操作:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下「編寫函式」。
在「執行階段」清單中,選取 PHP 執行階段版本。
按一下「建立」,然後等待 Cloud Run 使用預留位置修訂版本建立服務。
主控台會將您重新導向至「來源」分頁,您可以在這裡查看函式的原始碼。按一下「儲存並重新部署」。
如需函式部署後更新執行階段版本的詳細操作說明,請參閱「重新部署新的原始碼」。
原始碼結構
如要讓 Cloud Run 函式找到函式的定義,原始碼必須遵循特定結構。詳情請參閱「編寫 Cloud Run functions」。
PHP 設定
您可以在函式的根目錄中,使用 php.ini
檔案設定 PHP 函式。您可以使用 phpinfo()
函式查看現有的 PHP 設定,如下列程式碼範例所示:
指定依附元件
PHP 會使用 Composer 管理依附元件。如要為函式指定依附元件,請將依附元件新增至名為 composer.json
的專案檔案。
Cloud Run functions PHP 執行階段需要將 Functions Framework 設為明確的依附元件。如要將 Functions Framework 新增為依附元件,請在包含函式程式碼的目錄中執行下列指令 (這個目錄也必須包含 composer.json
檔案):
composer require google/cloud-functions-framework
這項指令會將 Functions Framework 新增至 composer.json
,並在 vendor/
目錄中安裝套件。
「autoload.php
」檔案
vendor/
目錄中包含的其中一個檔案是 autoload.php
。
在 PHP 指令碼頂端新增下列程式碼,要求 autoload.php
檔案,該檔案會自動 require
函式的其他依附元件:
require_once __DIR__ . '/vendor/autoload.php';
根據預設,系統會在產生的 .gcloudignore
檔案中忽略 vendor/
目錄,藉此減少部署作業中傳送的檔案數量。