Il file php.ini

Puoi includere un file php.ini con la tua applicazione App Engine. Questo file consente di personalizzare il comportamento delle istruzioni dell'interprete PHP.

Informazioni su php.ini

Il file php.ini deve essere collocato nella directory di base di un'applicazione (la stessa directory del file app.yaml). Viene caricato quando l'interprete PHP è stato inizializzato e prima dell'esecuzione del codice dell'applicazione.

Il file segue la stessa sintassi di altri file .ini. Un semplice un esempio potrebbe avere il seguente aspetto:

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

Un elenco delle direttive di base, insieme ai relativi valori di modalità modificabili, è pubblicato su php.net. Le direttive php.ini gestite dalle estensioni sono documentate nelle rispettive pagine delle estensioni stesse.

Puoi sostituire qualsiasi direttiva PHP che abbia uno dei seguenti valori di modalità modificabili:

  • PHP_INI_SYSTEM
  • PHP_INI_ALL
  • PHP_INI_PERDIR

Alcune funzioni sono state è disabilitata nell'implementazione di PHP su App Engine. Le direttive che hanno come target queste funzioni non avranno alcun effetto.

Un insieme di le estensioni caricabili dinamicamente possono essere attivate utilizzando extension.

Direttive PHP per App Engine

Le seguenti istruzioni sono specifiche per l'ambiente App Engine. Possono essere inclusi nel file php.ini.

  • google_app_engine.enable_curl_lite - Abilita "cURL lite", una versione integrata di cURL specifica di App Engine, se impostata su "1". "cURL Lite" può essere utilizzato esattamente come si userebbe funzioni cURL, ma chiama Recupero URL dietro le quinte anziché nei socket, quindi senza equivalenti di recupero URL, genera un CurlLiteMethodNotSupportedException.

    Nota: un'app non può attivare contemporaneamente l'estensione "curl.so" e "cURL lite", poiché quest'ultima sovraccarica le funzioni cURL.

  • google_app_engine.enable_functions - Funzioni che sono state disattivate in App Engine, ma che possono essere riattivate utilizzando questa direttiva. Elenco i nomi delle funzioni in una stringa delimitata da virgole:
    google_app_engine.enable_functions = "phpversion, phpinfo"
  • google_app_engine.allow_include_gs_buckets - Consente alla tua applicazione di utilizzare include oppure require con file archiviati in Google Cloud Spazio di archiviazione.

    Nota: puoi utilizzare #default# per il bucket predefinito. questo valore verrà automaticamente sostituita in fase di runtime con il nome attuale del bucket predefinito.

    Ad esempio, elenca il bucket predefinito, insieme ai bucket bucket_1 e bucket_2 che contengono i file in una stringa delimitata da virgole:

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

    Puoi anche specificare un bucket e un percorso per i file che possono essere inclusi, ad esempio:

    google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"

    Quando viene eseguito il controllo dei file che possono essere inclusi da Google Cloud Storage, fornito viene considerato come un prefisso che, perché deve corrispondere all'inizio del nome del file, da includere o richiedere. Utilizzando ad esempio il percorso di esempio sopra, il campo percorso consentirebbe agli utenti di includere file da gs://bucket_1/path_x/... perché il prefisso corrisponde, ma non di gs://bucket_1 or gs://bucket_1/path_y/ perché il prefisso non corrisponde.

    Se un file caricato viene spostato in un bucket di inclusione consentito, viene visualizzato viene generato per avvisare l'utente di un LFI un attacco. In questo caso, considera l'utilizzo di una un percorso restrittivo.

    Nota: il percorso viene considerato come un file. prefisso; quindi potrebbe includere un file specifico come 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 - Per impostazione predefinita, le applicazioni PHP non sono autorizzate a scrivere nel file system. Impostando questa istruzione su "1" rimuoverà la limitazione per l'ambiente di sviluppo locale. Tuttavia, l'impostazione non si applica alle applicazioni in esecuzione in produzione, che sono sempre soggetti alle restrizioni della sandbox.