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

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

PHP 5 已淘汰,即使貴機構先前曾使用機構政策重新啟用舊版執行階段的部署作業,您也無法部署 PHP 5 應用程式。現有的 PHP 5 應用程式仍會繼續運作並接收流量。建議您改用最新支援的 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」欄位。使用 Identity and Access Management (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. 在本地安裝對應版本的 PHP,該版本須與 App Engine 標準環境中提供的第二代 PHP 執行階段相符。

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

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

php -S localhost:8080

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