從 PHP 5.5 遷移至最新的 PHP 執行階段

本頁面說明如何從第一代遷移至 PHP 的第二代執行階段。如要升級第二代應用程式,以便使用最新的支援 PHP 版本,請參閱「升級現有應用程式」。

PHP 5 已於 2024 年 1 月 30 日停止支援。現有的 PHP 5 應用程式將繼續執行並接收流量。不過,如果應用程式使用已停用支援的日期後的執行階段,App Engine 可能會阻止重新部署該應用程式。建議您按照本頁面中的指南,改用最新的支援執行階段 PHP 執行階段。

只要遷移至支援的第二代 PHP 執行階段,您就能使用最新的語言功能,並透過慣用程式碼建構更具可攜性的應用程式。

PHP 5.5 與第二代 PHP 執行階段之間的相容性問題

PHP 官方說明文件提供從不同 PHP 版本遷移的相關資訊:

PHP 5.5 與第二代 PHP 執行階段的主要差異

以下摘要列出 App Engine 標準環境中 PHP 5.5 與第二代 PHP 執行階段的差異:

記憶體用量差異

與第一代執行階段相比,第二代執行階段的記憶體使用量基準較高。這可能是由多種因素造成,例如不同的基礎映像檔版本,以及兩個世代計算記憶體用量的方式不同。

第二代執行階段會將執行個體記憶體用量計算為應用程式程序使用的用量總和,以及記憶體中動態快取的應用程式檔案數量。為避免記憶體密集型應用程式因超出記憶體限制而導致執行個體關閉,請升級至記憶體較多的執行個體類別

CPU 用量差異

在執行個體冷啟動時,第二代執行階段可看到較高的 CPU 使用率基準。視應用程式的縮放設定而定,這可能會產生非預期的副作用,例如,如果應用程式已設為根據 CPU 使用率進行縮放,則執行個體數量可能會高於預期。為避免發生這個問題,請查看並測試應用程式縮放設定,確保可用的執行個體數量。

要求標頭差異

第一代執行階段允許將含有底線的請求標頭 (例如 X-Test-Foo_bar) 轉送至應用程式。第二代執行階段會將 Nginx 導入主機架構。因此,第二代執行階段會自動移除含有底線 (_) 的標頭。為避免應用程式發生問題,請避免在應用程式要求標頭中使用底線。

遷移 app.yaml 檔案

您必須設定前端控制器才能處理應用程式中的所有轉送。詳情請參閱「啟動應用程式」。

第二代 PHP 執行階段不允許自訂 script 處理常式元素。所有流量都是使用 entrypoint 指令來提供,因此唯一有效值是 auto。所有非靜態網址處理常式都必須包含 script: auto,才能成功部署。

app.yaml 設定檔中部分元素的行為已受到修改:

元素變更類型說明
entrypoint已新增 您可以選擇性地使用這個欄位 指定應用程式啟動時要執行的指令
threadsafe已淘汰系統會假設所有應用程式皆具備「執行緒安全」特性,代表一個執行個體可以同時處理多個要求。
api_version已淘汰先前為必要元素,但在第二代 PHP 執行階段中並不需要這個元素。
application_readable已淘汰
builtins已淘汰
libraries已淘汰您可以使用 composer.json 中繼資料檔案安裝任何第三方依附元件。
handlers已修改
  • script 為選填欄位,且唯一可接受的值為 auto。請將網路架構 (例如 LaravelSymfonySlim 或類似選項) 與應用程式內的轉送機制搭配使用,以便在要求觸發特定路徑時執行指令碼
  • 系統不支援 login 欄位。使用身分與存取權管理 (IAM) 管理使用者。

如果您使用任何已淘汰的欄位,則部署應用程式時將會出現錯誤。

詳情請參閱 app.yaml 參考資料

已降低執行階段限制

與 PHP 5.5 執行階段相比,第二代 PHP 執行階段的限制較少。

詳情請參閱 PHP 執行階段環境

從 App Engine PHP SDK 遷移

為減少執行階段遷移作業的難度和複雜度,App Engine 標準環境可讓您存取第二代 PHP 執行階段中的許多舊版套裝服務和 API,例如 Memcache。第二代 PHP 應用程式可透過 App Engine SDK 呼叫內含的服務 API,並存取與 PHP 5 執行階段相同的大部分功能。並非所有適用於 PHP 5 的舊版內含服務,在第二代 PHP 執行階段中都有對應的服務。如需第二代 PHP 執行階段可用的舊版服務套裝組合 API 完整清單,請參閱舊版服務套裝組合 API 參考資料說明文件

您也可以選擇使用 Google Cloud 與舊版套裝服務相似的產品。這些 Google Cloud 產品提供慣用 Google Cloud CLI 用戶端程式庫。對於在 Google Cloud中無法以獨立產品形式提供的舊版套裝服務 (例如搜尋),您可以使用第三方供應商或其他解決方法。如要進一步瞭解如何遷移至非套裝組合服務,請參閱「從套裝組合服務遷移」。

在本機執行您的應用程式

如要測試應用程式並在本機執行,請按照下列步驟操作:

  1. 在本機安裝與 App Engine 標準環境中可用的第二代 PHP 執行階段相對應的 PHP 版本

  2. 安裝網路伺服器,並用於在本機提供應用程式。

例如,執行下列指令以啟動 HTTP 伺服器:

php -S localhost:8080

然後,使用網路瀏覽器前往 http://localhost:8080 以查看您的應用程式。