Pode incluir um ficheiro php.ini com a sua aplicação do App Engine. Este ficheiro permite-lhe personalizar o comportamento das diretivas do intérprete PHP.
Acerca do php.ini
O ficheiro php.ini
deve ser colocado no diretório base de uma aplicação (o mesmo diretório que o ficheiro app.yaml
). É carregado quando o intérprete PHP é inicializado e antes de o código da aplicação ser executado.
O ficheiro segue a mesma sintaxe que outros ficheiros .ini. Um exemplo simples pode ter o seguinte aspeto:
; This is a simple php.ini file on App Engine ; ; This is a directive set to "On" widget_compression = "On"
É publicada uma lista das diretivas principais, juntamente com os respetivos valores de modo alteráveis, em php.net. As diretivas php.ini
processadas por extensões estão documentadas nas páginas respetivas das próprias extensões.
Pode substituir qualquer diretiva PHP que tenha um dos seguintes valores de modo alteráveis:
PHP_INI_SYSTEM
PHP_INI_ALL
PHP_INI_PERDIR
Tenha em atenção que algumas funções foram desativadas na implementação do PHP do App Engine. As diretivas que segmentam estas funções não têm efeito.
É possível ativar um conjunto de
extensões carregáveis dinamicamente através da diretiva extension
.
Diretivas PHP para o App Engine
As seguintes diretivas são específicas do ambiente do App Engine. Podem ser incluídas no ficheiro php.ini.
google_app_engine.enable_curl_lite
- Ativa o "cURL lite", uma versão incorporada do cURL específica do App Engine, quando definido como "1". O "cURL lite" pode ser usado exatamente como usaria as funções cURL padrão, mas chama o URL Fetch nos bastidores em vez de sockets. Assim, as funções sem um equivalente de URL Fetch geram umCurlLiteMethodNotSupportedException
.Nota: uma app não pode ativar a extensão "curl.so" e o "cURL lite" em simultâneo, uma vez que este último sobrecarrega as funções cURL.
google_app_engine.enable_functions
- Funções que foram desativadas temporariamente no App Engine, mas que podem ser reativadas através desta diretiva. Liste os nomes das funções numa string delimitada por vírgulas:google_app_engine.enable_functions = "phpversion, phpinfo"
google_app_engine.allow_include_gs_buckets
- Permite que a sua aplicação use as declaraçõesinclude
ourequire
com ficheiros armazenados no Google Cloud Storage.Nota: pode usar
#default#
para o contentor predefinido. Este valor é substituído automaticamente no momento da execução pelo nome do contentor predefinido atual.Por exemplo, liste o contentor predefinido, juntamente com os contentores
bucket_1
ebucket_2
que contêm os ficheiros numa string delimitada por vírgulas:google_app_engine.allow_include_gs_buckets = "#default#, bucket_1, bucket_2"
Também pode especificar um contentor e um caminho para os ficheiros que podem ser incluídos, por exemplo:
google_app_engine.allow_include_gs_buckets = "bucket_1/path_x"
Quando a verificação é realizada para determinar que ficheiros podem ser incluídos a partir do Google Cloud Storage, o caminho fornecido é tratado como um prefixo que tem de corresponder ao início do nome do ficheiro para que este seja incluído ou obrigatório. Por exemplo, usando o exemplo de caminho acima, o caminho fornecido permitiria aos utilizadores incluir ficheiros de
gs://bucket_1/path_x/...
porque o prefixo corresponde, mas não degs://bucket_1 or gs://bucket_1/path_y/
porque o prefixo não corresponde.Se um ficheiro carregado for movido para um contentor de inclusão permitido, é gerado um aviso para alertar o utilizador para um potencial ataque LFI. Se isto acontecer, deve considerar usar um caminho mais restritivo.
Nota: o caminho é tratado como um prefixo de ficheiro. Por isso, também pode incluir um ficheiro específico, por exemplo,
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
- Por predefinição, as aplicações PHP não podem escrever no sistema de ficheiros. Definir esta diretiva como "1" anula a restrição para o ambiente de desenvolvimento local. No entanto, a definição não se aplica a aplicações em execução em produção, que estão sempre sujeitas às restrições da sandbox.