Datei php.ini

Sie können in Ihre App Engine-Anwendung eine php.ini-Datei einbinden. Diese Datei bietet die Möglichkeit, das Verhalten der PHP-Interpreter-Anweisungen anzupassen.

Informationen zu php.ini

Die Datei php.ini sollte sich im Basisverzeichnis einer Anwendung befinden (im selben Verzeichnis wie die Datei app.yaml). Sie wird mit der Initialisierung des PHP-Interpreters geladen, bevor der Anwendungscode ausgeführt wird.

Für die Datei gilt die gleiche Syntax wie für andere INI-Dateien. Im Folgenden ist dafür ein einfaches Beispiel dargestellt:

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

Eine Liste der Kernanweisungen mit ihren änderbaren Moduswerten wird auf php.net veröffentlicht. Die php.ini-Anweisungen, die von Erweiterungen verarbeitet werden, sind auf den jeweiligen Seiten der Erweiterungen selbst dokumentiert.

Sie können jede PHP-Anweisung überschreiben, die einen der folgenden bearbeitbaren Moduswerte enthält:

  • PHP_INI_SYSTEM
  • PHP_INI_ALL
  • PHP_INI_PERDIR

Beachten Sie, dass einige Funktionen in der App Engine-Implementierung von PHP deaktiviert wurden. Anweisungen, die sich auf diese Funktionen beziehen, haben keine Wirkung.

Mit der extension-Anweisung kann eine Reihe von dynamisch geladenen Erweiterungen aktiviert werden.

PHP-Anweisungen für App Engine

Die im Folgenden aufgeführten Anweisungen gelten nur für die App Engine-Umgebung. Sie können in die Datei php.ini aufgenommen werden.

  • google_app_engine.enable_curl_lite - Aktiviert "cURL Lite", eine integrierte, App Engine-spezifische Version von cURL, wenn "1" festgelegt ist. "cURL lite" kann genauso wie die standardmäßigen cURL-Funktionen verwendet werden, ruft jedoch URL Fetch im Hintergrund statt Sockets ab, d. h. Funktionen ohne URL-Abruf-Äquivalent, lösen einen CurlLiteMethodNotSupportedException aus.

    Hinweis: Anwendungen können nicht gleichzeitig die Erweiterung "curl.so" und "cURL Lite" aktivieren, da "cURL Lite" die cURL-Funktionen zu stark beansprucht.

  • google_app_engine.enable_functions - Funktionen deaktiviert in App Engine kann aber mithilfe dieser Anweisung wieder aktiviert werden. Geben Sie die Funktionsnamen durch Kommas getrennt in einem String an:
    google_app_engine.enable_functions = "phpversion, phpinfo"
  • google_app_engine.allow_include_gs_buckets - Ihre Anwendung kann die include oder require Anweisungen mit in Google Cloud Storage gespeicherten Dateien verwenden.

    Hinweis: Sie können #default# für den Standard-Bucket verwenden. Dieser Wert wird zur Laufzeit automatisch durch Ihren aktuellen Standard-Bucket-Namen ersetzt.

    Listen Sie beispielsweise den Standard-Bucket zusammen mit den Buckets bucket_1 und bucket_2 auf, die die Dateien in einem kommagetrennten String enthalten:

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

    Sie können auch einen Bucket und einen Pfad zu Dateien angeben, die aufgenommen werden sollen. Beispiel:

    google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"

    Bei der Prüfung der aus Google Cloud Storage aufzunehmenden Dateien wird der angegebene Pfad als Präfix behandelt. Alle Dateien, deren Namensanfang mit dem Präfix übereinstimmt, können aufgenommen oder angefordert werden. Wenn Sie beispielsweise das Pfadbeispiel oben verwenden, können Nutzer mit dem angegebenen Pfad Dateien von gs://bucket_1/path_x/... einschließen, da das Präfix übereinstimmt, aber nicht von gs://bucket_1 or gs://bucket_1/path_y/, da das Präfix nicht übereinstimmt.

    Wenn eine hochgeladene Datei in einen zulässigen "Einschließen" -Bucket verschoben wird, wird eine Warnung generiert, um den Nutzer auf einen möglichen LFI -Anfall hinzuweisen. Sie sollten dann einen restriktiveren Pfad verwenden.

    Hinweis: Der Pfad wird als Dateipräfix behandelt. Es kann also auch eine bestimmte Datei enthalten, z. B. 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-Anwendungen dürfen standardmäßig nicht in das Dateisystem schreiben. Wenn Sie diese Anweisung auf "1" setzen, wird diese Beschränkung für die lokale Entwicklungsumgebung aufgehoben. Diese Einstellung gilt jedoch nicht für Anwendungen, die in der Produktion ausgeführt werden. Diese unterliegen immer den Sandbox-Einschränkungen.