Cloud Run 函式會在包含附加套件、語言支援的作業系統版本,以及支援及叫用函式的 PHP 函式架構程式庫的環境中執行。這個環境會透過語言版本進行識別,稱為「執行階段 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」頁面:
按一下「編寫函式」。
在「Runtime」清單中,選取 PHP 執行階段版本。
按一下「Create」(建立),然後等待 Cloud Run 使用預留位置修訂版本建立服務。
主控台會將您重新導向至「來源」分頁,您可以在該分頁中查看函式的原始碼。按一下「儲存並重新部署」。
如需有關在函式部署後更新執行階段版本的詳細操作說明,請參閱「重新部署新原始碼」。
原始碼結構
如要讓 Cloud Run 函式找到函式定義,您的原始碼必須遵循特定結構。詳情請參閱「編寫 Cloud Run 函式」。
PHP 設定
您可以在函式根目錄中使用 php.ini
檔案設定 PHP 函式。您可以使用 phpinfo()
函式查看現有的 PHP 設定,如以下程式碼範例所示:
指定依附元件
PHP 會使用 Composer 管理依附元件。您可以將依附元件新增至名為 composer.json
的專案檔案,藉此指定函式的依附元件。
Cloud Run 函式 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/
目錄,藉此減少部署作業中傳送的檔案數量。