Puoi includere un file php.ini nella 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 istruzioni principali, con i relativi valori di modalità modificabili,
è pubblicato su php.net.
Le istruzioni php.ini
gestite dalle estensioni sono documentate nella
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. Direttive che hanno come target queste funzioni non avranno alcun effetto.
Un insieme di
le estensioni caricabili dinamicamente possono essere attivate utilizzando
extension
.
Istruzioni 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 unCurlLiteMethodNotSupportedException
.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. Elenca i nomi delle funzioni in una stringa separata da virgole:google_app_engine.enable_functions = "phpversion, phpinfo"
google_app_engine.allow_include_gs_buckets
- Consente alla tua applicazione di utilizzareinclude
oppurerequire
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
ebucket_2
contenenti 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 il percorso dei file che possono essere inclusi, ad esempio:
google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"
Quando viene eseguito il controllo per stabilire quali file possono essere inclusi da Google Cloud Storage, il percorso fornito viene trattato come un prefisso che deve corrispondere all'inizio del nome del file affinché sia incluso o obbligatorio. Ad esempio, utilizzando l'esempio di percorso riportato sopra, il percorso fornito consentirebbe agli utenti di includere i 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 visualizzato viene generato per avvisare l'utente di un LFI un attacco informatico. 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 filesystem. 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 soggetti alle restrizioni della sandbox.