Fichier php.ini

Vous pouvez inclure un fichier php.ini à votre application App Engine. Ce fichier vous permet de personnaliser le comportement des directives de l'interpréteur PHP.

À propos de php.ini

Le fichier php.ini doit être placé dans le répertoire de base d'une application (le même répertoire que le fichier app.yaml). Il est chargé lors de l'initialisation de l'interpréteur PHP et avant l'exécution du code de l'application.

Le fichier suit la même syntaxe que les autres fichiers .ini. Un exemple simple pourrait ressembler à ceci :

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

Une liste des directives principales, avec leurs valeurs en mode variable, est publiée sur php.net. Les directives php.ini gérées par des extensions sont répertoriées sur les pages de chaque extension.

Vous pouvez remplacer toute directive PHP ayant l'une des valeurs en mode variable suivantes :

  • PHP_INI_SYSTEM
  • PHP_INI_ALL
  • PHP_INI_PERDIR

Notez que certaines fonctions ont été désactivées dans la mise en œuvre App Engine de PHP. Les directives qui ciblent ces fonctions n'auront aucun effet.

La directive extension vous permet d'activer un ensemble d'extensions pouvant être chargées dynamiquement.

Directives PHP pour App Engine

Les directives suivantes sont spécifiques à l'environnement App Engine. Elles peuvent être incluses dans le fichier php.ini.

  • google_app_engine.enable_curl_lite : Active "cURL lite", une version intégrée de cURL spécifique à App Engine, lorsqu'elle est définie sur "1". La version "cURL lite" peut être utilisée exactement de la même manière que les fonctions standards de cURL, mais elle utilise, en coulisses, URL Fetch plutôt que des sockets. Ainsi les fonctions sans équivalent d'"URL Fetch" génèrent une exception CurlLiteMethodNotSupportedException.

    Remarque : Une application ne peut pas activer simultanément les extensions "curl.so" et "cURL lite", cette dernière surchargeant les fonctions cURL.

  • google_app_engine.enable_functions : Fonctions désactivées de manière réversible dans App Engine, mais qui peuvent être réactivées à l'aide de cette directive. Les noms de fonctions doivent être énumérés dans une chaîne délimitée par des virgules comme ci-après :
    google_app_engine.enable_functions = "phpversion, phpinfo"
  • google_app_engine.allow_include_gs_buckets : Autorise votre application à utiliser les instructions include ou require avec des fichiers stockés dans Google Cloud Storage.

    Remarque : Vous pouvez utiliser #default# pour le bucket par défaut. Cette valeur sera automatiquement remplacée lors de l'exécution par le nom de votre bucket par défaut actuel.

    Par exemple, répertoriez le bucket par défaut, ainsi que les buckets bucket_1 et bucket_2 contenant les fichiers dans une chaîne délimitée par des virgules :

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

    Vous pouvez également spécifier un bucket avec un chemin d'accès aux fichiers inclus, par exemple :

    google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"

    Lorsque la vérification des fichiers pouvant être inclus à partir de Google Cloud Storage est effectuée, le chemin fourni est traité comme un préfixe qui doit correspondre au début du nom de fichier pour pouvoir être inclus ou requis. Par exemple, l'exemple de chemin ci-dessus permet aux utilisateurs d'inclure des fichiers de gs://bucket_1/path_x/..., car le préfixe correspond, mais pas de gs://bucket_1 or gs://bucket_1/path_y/, car le préfixe ne correspond pas.

    Si un fichier importé est déplacé vers un bucket d'inclusion autorisé, un avertissement est généré pour alerter l'utilisateur en cas d'attaque LFI potentielle. Si cela se produit, nous vous recommandons d'utiliser un chemin plus restrictif.

    Remarque : Le chemin est traité comme un préfixe de fichier. Il peut donc également inclure un fichier spécifique, par exemple, 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 : Par défaut, les applications PHP ne sont pas autorisées à écrire sur le système de fichiers. Définir cette directive sur "1" lève la restriction pour l'environnement de développement local. Toutefois, le paramètre ne s'applique pas aux applications en cours d'exécution dans l'environnement de production, celles-ci étant toujours soumises aux restrictions de bac à sable.