Puoi includere un file php.ini con la tua applicazione App Engine. Questo file ti consente di personalizzare il comportamento delle direttive dell'interprete PHP.
Informazioni su php.ini
Il file php.ini deve essere inserito nella directory di base di un'applicazione (la stessa directory del file app.yaml). Viene caricato quando l'interprete PHP viene
inizializzato e prima dell'esecuzione del codice dell'applicazione.
Il file segue la stessa sintassi degli altri file .ini. Un semplice esempio potrebbe essere:
; This is a simple php.ini file on App Engine ; ; This is a directive set to "On" widget_compression = "On"
Un elenco delle direttive principali, insieme ai valori della modalità modificabile,
è pubblicato su php.net.
Le direttive php.ini gestite dalle estensioni sono documentate nelle
rispettive pagine delle estensioni stesse.
Puoi ignorare qualsiasi direttiva PHP che abbia uno dei seguenti valori di modalità modificabili:
PHP_INI_SYSTEMPHP_INI_ALLPHP_INI_PERDIR
Tieni presente che alcune funzioni sono state disattivate nell'implementazione di PHP di App Engine. Le direttive che hanno come target queste funzioni non avranno effetto.
È possibile attivare un insieme di
estensioni caricabili dinamicamente utilizzando la direttiva
extension.
Direttive PHP per App Engine
Le seguenti direttive sono specifiche per l'ambiente App Engine. Possono essere inclusi nel file php.ini.
google_app_engine.enable_curl_lite- Se impostato su "1", abilita "cURL lite", una versione integrata di cURL specifica per App Engine. "cURL lite" può essere utilizzato esattamente come le funzioni cURL standard, ma chiama URL Fetch internamente anziché i socket, pertanto le funzioni senza un equivalente URL Fetch generano unCurlLiteMethodNotSupportedException.Nota: un'app non può attivare contemporaneamente l'estensione "curl.so" e "cURL lite", in quanto quest'ultima sovraccarica le funzioni cURL.
google_app_engine.enable_functions- Funzioni che sono state disabilitate temporaneamente in App Engine, ma possono essere riattivate utilizzando questa direttiva. Elenca 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 all'applicazione di utilizzare le istruzioniincludeorequirecon i file archiviati in Google Cloud Storage.Nota: puoi utilizzare
#default#per il bucket predefinito; questo valore verrà sostituito automaticamente in fase di runtime con il nome del bucket predefinito corrente.Ad esempio, elenca il bucket predefinito, insieme ai bucket
bucket_1ebucket_2contenenti 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, il percorso fornito viene trattato come un prefisso che deve corrispondere all'inizio del nome file affinché venga incluso o richiesto. Ad esempio, utilizzando il percorso di esempio riportato sopra, il percorso fornito consentirebbe agli utenti di includere file da
gs://bucket_1/path_x/...perché il prefisso corrisponde, ma non dags://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 generato un avviso per avvisare l'utente di un potenziale attacco LFI. In questo caso, ti consigliamo di utilizzare un percorso più restrittivo.
Nota:il percorso viene trattato come prefisso del file, quindi potrebbe includere anche un file specifico, ad esempio
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 possono scrivere nel file system. Se imposti questa direttiva su "1", la limitazione per l'ambiente di sviluppo locale verrà rimossa. Tuttavia, l'impostazione non si applica alle applicazioni in esecuzione in produzione, che sono sempre soggette alle limitazioni della sandbox.