PHP 開發伺服器

Cloud SDKPHP 專用的 App Engine SDK 均含有本機開發伺服器,讓您在本機環境中執行,以模擬在實際工作環境的 App Engine 中執行的應用程式。模擬的環境會強制執行一些沙箱限制,例如有限的系統功能和 PHP 模組匯入,但不包括要求逾時或配額。

針對 App Engine 適用的 SDK 內的程式庫所提供的服務 (包括 Datastore、Memcache 及 Task Queues),本機開發伺服器也會在本機執行這些服務的工作以進行模擬。在開發伺服器中執行應用程式時,仍可使用 Google API HTTP 端點對正式基礎架構進行遠端 API 呼叫。

執行本機開發伺服器

為應用程式建立 app.yaml 設定檔後,您可以使用 dev_appserver.py 指令啟動本機開發伺服器,以在本機執行您的應用程式。

如何啟動本機開發伺服器:

  1. 從含有應用程式 app.yaml 設定檔的目錄執行 dev_appserver.py 指令,如下所示:
    Windows/macOS

    指定應用程式的目錄路徑,例如:

    dev_appserver.py [PATH_TO_YOUR_APP]

    或者,指定特定服務的設定檔,例如:

    dev_appserver.py app.yaml

    如要變更通訊埠,請包含 --port 選項:

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    Linux/cust. php-cgi

    如果您是在 Linux 上或想要使用自訂版本的 php-cgi,則必須指定 php-cgi 的目錄路徑:

    1. 在您的本機電腦上建構自己的 App Engine PHP 擴充功能版本。
    2. 使用 --php_executable_path--php_gae_extension_path 選項啟動本機開發伺服器:
      dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml

      其中 --php_executable_path 是您使用的 PHP 解譯器所在位置,而 --php_gae_extension_path 是您在前一步驟中建構的 gae_runtime_module.so 檔案的所在位置。

    dev_appserver.py 無法運作?

    如要進一步瞭解 dev_appserver.py 指令選項,請參閱本機開發伺服器選項一文。

  2. 本機開發伺服器現正在執行並聽取要求。請使用網路瀏覽器造訪 http://localhost:8080/,查看運作中的應用程式。

    如有使用 --port 選項指定自訂通訊埠,請務必在瀏覽器中開啟該通訊埠。

如要透過指令列停止本機伺服器,請按下列按鍵:

  • macOS 或 Linux:Control-C
  • Windows:Control-Break

指定應用程式 ID

如想在本機伺服器存取應用程式 ID,例如想要假冒電子郵件地址,請使用 AppIdentityService::getApplicationId 函式。要取得執行中應用程式的主機名稱,請使用 AppIdentityService::getDefaultVersionHostname 函式。

偵測應用程式執行階段環境

如要判定程式碼是在實際工作環境還是本機開發伺服器中執行,請檢查 SERVER_SOFTWARE 環境變數:

if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
  echo 'Local development server';
} else {
  echo 'Production';
}

儲存資料

PHP 專用的 App Engine 支援透過 PHP 串流 API 讀取和寫入至 Cloud Storage。如要讀取和寫入 Cloud Storage,請在使用任何支援 PHP 串流實作 (例如 fopenfwritefile_get_contents) 的 PHP 功能時,指定 Cloud Storage URI (gs://)。

本機開發伺服器可透過讀取和寫入要求之間保留的臨時本機檔案,來模擬這項功能。

瀏覽本機 Datastore

如果應用程式透過本機開發伺服器將資料寫入本機資料儲存庫,您可以在本機開發控制台瀏覽這些內容。

如要瀏覽本機資料儲存庫:

  1. 啟動開發伺服器

  2. 在本機開發控制台中存取 Datastore 檢視器 (網址為 http://localhost:8000/datastore)。

  3. 檢視本機 Datastore 內容。

使用 Users 服務

App Engine 提供的 Users 服務可以簡化應用程式的驗證和授權作業。本機開發伺服器可使用本身的登入和登出頁面模擬 Google 帳戶的行為。在本機開發伺服器中執行時,createLoginURLcreateLogoutURL 函式會傳回本機伺服器上 /_ah/login/_ah/logout 的網址。

使用郵件

本機開發伺服器可透過 SMTP 伺服器或安裝於本機的 Sendmail 來傳送呼叫 App Engine 郵件服務的電子郵件。

使用 SMTP

如要啟用 SMTP 伺服器的郵件支援,請叫用 dev_appserver.py,如下所示:

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

其中,--smtp_host--smtp_port--smtp_user--smtp_password 選項必須設定為您所要的值。

使用 Sendmail

如要啟用 Sendmail 的郵件支援,請叫用 dev_appserver.py,如下所示:

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

本機伺服器將透過 sendmail 指令以安裝的預設設定來傳送電子郵件訊息。

使用網址擷取

應用程式使用 URL Fetch API 發出 HTTP 要求時,本機開發伺服器會直接從您的電腦發出要求。如果您使用 Proxy 伺服器來存取網站,則本機伺服器上的 URL Fetch 行為可能會和實際工作環境中的 App Engine 不同。

使用 XDebug 在本機除錯

如果您的偵錯工具與 XDebug 偵錯工具相容,且安裝了 xdebug 模組,則可以在本機開發伺服器中使用 XDebug。

如何在 Linux 或 macOS 上為開發伺服器啟用 XDebug:

  1. 匯出 XDEBUG_CONFIG 環境變數,並使用 IDE 的 idekey 進行連結

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. 使用 --php_remote_debugging=yes 叫用開發伺服器

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
App Engine standard environment for PHP 5