php.ini ファイル

App Engine アプリケーションには php.ini ファイルをインクルードできます。このファイルにより、PHP インタープリタ ディレクティブの動作をカスタマイズできます。

php.ini について

php.ini ファイルは、アプリケーションのベース ディレクトリ(app.yaml ファイルと同じディレクトリ)に配置する必要があります。このファイルは、アプリケーション コードの実行前、PHP インタープリタが初期化されるときに読み込まれます。

このファイルは、他の .ini ファイルと同じ構文に従います。以下に簡単な例を示します。

; This is a simple php.ini file on App Engine
;
; This is a directive set to "On"
widget_compression = "On"

コア ディレクティブのリストとその変更可能なモード値は、php.net で公開されています。拡張機能によって処理される php.ini ディレクティブは、拡張機能のそれぞれのページに記載されています。

次の変更可能なモード値のいずれかを持つ PHP ディレクティブは、オーバーライドできます。

  • PHP_INI_SYSTEM
  • PHP_INI_ALL
  • PHP_INI_PERDIR

一部の関数は、App Engine の PHP 実装で無効になっています。これらの関数を対象にするディレクティブに効果はありません。

extension ディレクティブを使用すると、一連の動的に読み込み可能な拡張機能を有効にできます。

App Engine の PHP ディレクティブ

次のディレクティブは App Engine 環境に固有のもので、php.ini ファイルに含めることができます。

  • google_app_engine.enable_curl_lite - 1 に設定すると、組み込みの cURL の App Engine 固有バージョンである cURL lite が有効になります。cURL lite は、標準の cURL 関数とほぼ同様に使用できますが、ソケットではなく URL 取得を内部で呼び出します。このため、URL 取得を使用しない場合と同様に機能し、CurlLiteMethodNotSupportedException をスローします。

    注: アプリで curl.so 拡張機能と cURL lite を同時に有効にすることはできません。後者は cURL 関数をオーバーロードします。

  • google_app_engine.enable_functions - App Engine でソフト無効化されている関数は、このディレクティブを使用して再度有効にできます。関数名をカンマ区切り文字列で表示します。
    google_app_engine.enable_functions = "phpversion, phpinfo"
  • google_app_engine.allow_include_gs_buckets - Google Cloud Storage に保存されているファイルを使用して、include または require ステートメントをアプリケーションで使用可能にします。

    注: デフォルトのバケットに #default# を使用できます。この値は、ランタイムに現在のデフォルト バケット名に自動的に置き換えられます。

    たとえば、デフォルトのバケットとともに、ファイルを含むバケット bucket_1bucket_2 をカンマ区切りの文字列で指定します。

    google_app_engine.allow_include_gs_buckets = "#default#, bucket_1, bucket_2"

    次のように、バケットとそれに含まれるファイルへのパスを指定することもできます。

    google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"

    Google Cloud Storage から組み込まれるファイルが確認されるときに、指定したパスがファイル名の先頭に一致する接頭辞として扱われます。前述のパスの例では、指定したパスで gs://bucket_1/path_x/... からのファイルを含めることができます。接頭辞は一致しますが、gs://bucket_1 or gs://bucket_1/path_y/ によるものではないケースや、接頭辞が一致しないなどのケースが考えられるからです。

    アップロードしたファイルが許可されたバケットに移動すると、LFI 攻撃の可能性を知らせる警告がユーザーに表示されます。このような場合は、より制限の厳しいパスを使用する必要があります。

    注: パスはファイル接頭辞として扱われます。したがって、特定のファイルを指定することもできます(例: google_app_engine.allow_include_gs_buckets = "bucket_1/path_x.ext", "bucket_2/path_z/some_file.ext)。

  • google_app_engine.disable_readonly_filesystem - デフォルトでは、PHP アプリケーションにはファイル システムへの書き込みが許可されていません。このディレクティブを 1 に設定すると、ローカル開発環境の制限が解除されます。この設定は、本番環境で実行されているアプリケーションには適用されません。これらのアプリケーションは常にサンドボックスの制限を受けます。