Puede incluir un archivo php.ini en su aplicación de App Engine. Este archivo te permite personalizar el comportamiento de las directivas del intérprete de PHP.
Acerca de php.ini
El archivo php.ini
debe colocarse en el directorio raíz de una aplicación (el mismo directorio que el archivo app.yaml
). Se carga cuando se inicializa el intérprete de PHP y antes de que se ejecute el código de tu aplicación.
El archivo sigue la misma sintaxis que otros archivos .ini. Un ejemplo sencillo podría ser el siguiente:
; This is a simple php.ini file on App Engine ; ; This is a directive set to "On" widget_compression = "On"
En php.net se publica una lista de las directivas principales, junto con los valores de modo que se pueden cambiar.
Las directivas php.ini
que gestionan las extensiones se documentan en las páginas correspondientes de las extensiones.
Puede anular cualquier directiva de PHP que tenga uno de los siguientes valores de modo modificables:
PHP_INI_SYSTEM
PHP_INI_ALL
PHP_INI_PERDIR
Ten en cuenta que algunas funciones se han inhabilitado en la implementación de PHP de App Engine. Las directivas que se dirijan a estas funciones no tendrán ningún efecto.
Se puede habilitar un conjunto de
extensiones cargables dinámicamente mediante la directiva extension
.
Directivas de PHP para App Engine
Las siguientes directivas son específicas del entorno de App Engine. Se pueden incluir en el archivo php.ini.
google_app_engine.enable_curl_lite
- Habilita "cURL lite", una versión integrada de cURL específica de App Engine, cuando se le asigna el valor "1". "cURL lite" se puede usar exactamente igual que las funciones cURL estándar, pero llama a URL Fetch en lugar de a sockets, por lo que las funciones que no tienen un equivalente en URL Fetch generan unCurlLiteMethodNotSupportedException
.Nota: Una aplicación no puede habilitar la extensión "curl.so" y "cURL lite" al mismo tiempo, ya que esta última sobrecarga las funciones de cURL.
google_app_engine.enable_functions
- Funciones que se han inhabilitado temporalmente en App Engine, pero que se pueden volver a habilitar con esta directiva. Lista los nombres de las funciones en una cadena delimitada por comas:google_app_engine.enable_functions = "phpversion, phpinfo"
google_app_engine.allow_include_gs_buckets
- Permite que tu aplicación use las instruccionesinclude
orequire
con archivos almacenados en Google Cloud Storage.Nota: Puedes usar
#default#
para el segmento predeterminado. Este valor se sustituirá automáticamente en el tiempo de ejecución por el nombre del segmento predeterminado actual.Por ejemplo, puedes enumerar el segmento predeterminado junto con los segmentos
bucket_1
ybucket_2
que contienen los archivos en una cadena delimitada por comas:google_app_engine.allow_include_gs_buckets = "#default#, bucket_1, bucket_2"
También puede especificar un segmento y una ruta a los archivos que se pueden incluir. Por ejemplo:
google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"
Cuando se comprueba qué archivos se pueden incluir de Google Cloud Storage, la ruta proporcionada se trata como un prefijo que debe coincidir con el inicio del nombre del archivo para que se incluya o sea obligatorio. Por ejemplo, si se usa la ruta del ejemplo anterior, la ruta proporcionada permitiría a los usuarios incluir archivos de
gs://bucket_1/path_x/...
porque el prefijo coincide, pero no degs://bucket_1 or gs://bucket_1/path_y/
porque el prefijo no coincide.Si un archivo subido se mueve a un segmento de inclusión permitido, se genera una advertencia para alertar al usuario de una posible ataque LFI. En ese caso, te recomendamos que uses una ruta más restrictiva.
Nota: La ruta se trata como un prefijo de archivo, por lo que también podría incluir un archivo específico, como
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
- De forma predeterminada, las aplicaciones PHP no pueden escribir en el sistema de archivos. Si asignas el valor "1" a esta directiva, se eliminará la restricción en el entorno de desarrollo local. Sin embargo, el ajuste no se aplica a las aplicaciones que se ejecutan en producción, que siempre están sujetas a las restricciones del espacio aislado.