php.ini directives
PHP Manual

Descrição das principais diretivas do php.ini

Esta lista inclui as principais diretivas do php.ini que podemos definir para configurar o PHP. Diretivas manipuladas por extensões são listadas e detalhas na respectiva página de documentação da extensão; Informações sobre diretivas de sessões por exemplo, pode ser encontrada na página de sessões.

Nota:

Os padrões listados aqui são utilizados quando o php.ini não é carregado. Valores de produção e desenvolvimento no php.ini podem variar.

Opções Httpd

Opções Httpd
Nome Padrão Modificável Changelog
async_send "0" PHP_INI_ALL Disponível no PHP 4.2.0. Removido no PHP 4.3.0.

Opções de linguagem

Linguagem e opções de configurações diversas
Nome Padrão Modificável Changelog
short_open_tag "1" PHP_INI_PERDIR PHP_INI_ALL no PHP 4.0.0. PHP_INI_PERDIR no PHP >= 4.0.1.
asp_tags "0" PHP_INI_PERDIR PHP_INI_ALL no PHP 4.0.0. Removido no PHP 7.0.0.
precision "14" PHP_INI_ALL  
serialize_precision "17" PHP_INI_ALL Disponível desde PHP 4.3.2. Até PHP 5.3.5, o valor padrão é 100.
y2k_compliance "1" PHP_INI_ALL Removido no PHP 5.4.0.
allow_call_time_pass_reference "1" PHP_INI_PERDIR PHP_INI_ALL in PHP 4.0.0. Removido no PHP 5.4.0.
disable_functions "" PHP_INI_SYSTEM apenas Disponível desde PHP 4.0.1.
disable_classes "" php.ini apenas Disponível desde PHP 4.3.2.
exit_on_timeout "" PHP_INI_ALL Disponível desde PHP 5.3.0.
expose_php "1" php.ini apenas  
zend.multibyte "0" PHP_INI_ALL Disponível desde PHP 5.4.0
zend.script_encoding NULL PHP_INI_ALL Disponível desde PHP 5.4.0
zend.detect-unicode NULL PHP_INI_ALL Disponível desde PHP 5.4.0
zend.signal_check "0" PHP_INI_SYSTEM Disponível desde PHP 5.4.0
zend.assertions "1" PHP_INI_ALL com restrições Disponível desde PHP 7.0.0.
zend.ze1_compatibility_mode "0" PHP_INI_ALL Disponível desde PHP 5.0.0. Removido no PHP 5.3.0
detect_unicode "1" PHP_INI_ALL Disponível desde PHP 5.1.0. Renomeado para zend.detect-unicode a partir do PHP 5.4.0.

Uma rápida explicação das diretivas de configuração.

short_open_tag boolean

Diz ao PHP se a forma abreviada de abertura de tag (<? ?>) (<? ?>) está permitida. Se quiser usar PHP em conjunto com XML, pode ser desabilitado esta opção a fim de usar em linha <?xml ?>. Caso contrário, pode-se imprimir com PHP, por exemplo <?php echo '<?xml version="1.0"?>'; ?>. Além disso, se se desabilitado, pode-se usar a forma extensa de abertura de tag (<?php ?>).

Nota:

Esta diretiva também afeta a forma abreviada <?= anteriores ao PHP 5.4.0, que é a mesma que <? echo. Para uso desta abreviatura é necessário que short_open_tag esteja ativo. Desde PHP 5.4.0, <?= está sempre disponível.

asp_tags boolean
Ativa o uso do estilo ASP <% %> tags além da usual tag <?php ?>. Inclui a abreviatura de impressão da variável-valor <%= $value %>. Para mais informações, veja escapando HTML.

Changelog do asp_tags
Versão Descrição
7.0.0 Removido no PHP 7.0.0.

precision integer
O número de dígitos significativos exibidos em números de ponto flutuante. -1 significa que um algoritmo avançado para arredondamento será utilizado.
serialize_precision integer
O número de dígitos significativos armazenados durante a serialização de números de pontos flutuantes. -1 significa que um algoritmo avançado para arredondamento será utilizado.
y2k_compliance boolean
Assegura compatibilidade com ano 2000( irá causar problemas com navegadores não coompatíveis)
allow_call_time_pass_reference boolean

Serve para avisar quando argumentos são passados por referência durante chamadas de funções. O método recomendado para específicar quais argumentos deveriam ser passados por referência está na declaração da função. Recomendado tentar alterar esta função para Off e garantir que seus scripts funcionam corretamente a fim de garantir que eles executam com futuras versões da linguagem (pode-se receber uma mensagem de warning toda vez que for usado este recurso).

Passagem de argumentos por referência durante chamadas de função está obsoleta por razões de limpreza código. Uma função pode modificar estes argumentos maneira não documentada se não declarar que o argumento deve ser passado por referência. Para previnir efeitos colaterais é melhor especificar quais argumentos devem ser passados por referência apenas na declaração da função.

Veja também Explicação sobre referências.

Log de mundaças de allow_call_time_pass_reference
Versão Descrição
5.4.0 Removido do PHP.
5.3.0 Emite um nível de erro E_DEPRECATED.
5.0.0 Obsoleta, gera um nível de erro E_COMPILE_WARNING.

expose_php boolean

Expõe para o mundo que o PHP está instalado no servidor, inclui a versão do PHP dentro do header HTTP (e.g., X-Powered-By: PHP/5.3.7). Antes do PHP 5.5.0 o logotipo guids do PHP também são expostos, de modo que, quando adicionado à URL do seu script PHP, será mostrado o logotipo correspondente (e.g., » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Isto também afeta a saída do phpinfo(), quando desabilitado, o logotipo PHP as informações de créditos não serão mostradas.

Nota:

Desde o PHP 5.5.0, estes GUID e função php_logo_guid() foi removida do PHP e GUID foram substituídos por dados com URIs. Portanto, não funciona mais o acesso ao logotipo PHP adicionando o GUID para o URL. Similarmente, desativar expose_php não afeta a exibição de logotipo PHP phpinfo().

Veja também php_logo_guid() e phpcredits().

disable_functions string

Esta diretiva permite você desabilitar certas funções por razões de segurança. Recebe uma lista de nomes delimitada por vírgulas. disable_functions não não é afetado pelo Modo Seguro.

Apenas funções internas podem ser dsabilitadas usando esta diretiva. Funções definidas pelo Usuário não são afetadas.

Esta diretiva deve ser configurada no php.ini, por exemplo, não pode ser configurada dentro do httpd.conf.

disable_classes string
Esta diretiva permite desabilitar certas classes por razões de segurança. Recebe uma lista de nomes de classes. disable_classes não é afetada pelo Modo Seguro. Esta diretiva dese ver configurada no php.ini, por exemplo, não pode ser configurada no httpd.conf.
zend.assertions integer
Quando configurado para 1, codigo assertivo será gerado e executado (modo de desenvolvimento). Quando configurado para 0 então código assertivo será gerado mas ignorado (não executado). Quando configurado para -1 código assertivo não será gerado, retirando o custo de asserts (modo de produção).

Nota:

Se um processo foi iniciado no modo de produção, zend.assertions não poderá ser modificado em tempo de execução, já que o código para a asserção não foi gerado.

Se um processo foi iniciado no modo de desenvolvimento, zend.assertions não poderá ser definido para -1 em tempo de execução.

zend.ze1_compatibility_mode boolean

Ativa modo de compatibilidade com Zend Engine 1 (PHP 4). Afeta a clonagem, conversão ( objetos sem propriedades são convertidos para FALSE ou 0), e comparação de objetos. Neste modo, objetos são passados por valor, em vez de por referência como padrão.

Veja também seção entitulada Migrando do PHP 4 para o PHP 5.

Aviso

Este recurso se tornou OBSOLETO e foi REMOVIDO do PHP 5.3.0

zend.multibyte boolean

Permite a análise de arquivos fontes em codificações multibytes. Ativar zend.multibyte é requerido para utilizar codificações de caracteres como SJIS, BIG5, etc que contém caracteres especiais em strings multidata. Codificações compatíveis com ISO-8859-1 como UTF-8, EUC, etc não requerem essa opção.

Habilitar o zend.multibyte requer que a extensão mbstring esteja disponível.

zend.script_encoding string

Este valor vai ser usado, a menos que diretiva declare(encoding=...) apareça no início do script. Quando uma codificação incompatível com ISO-8859-1 é utilizada, ambos zend.multibyte e zend.script_encoding precisam ser utilizados.

Strings literais serão transliteradas de zend.script_enconding para mbstring.internal_encoding, como se a função mb_convert_encoding() tivesse sido chamada.

zend.detect_unicode boolean

Verifica o BOM (Byte Order Mark) e determina se o arquivo contém caracteres multibyte válidos. Essa detecção é realizada antes do processamento de __halt_compiler(). Disponível apenas no modo Zend Multibyte.

zend.signal_check boolean

Para verificar se manipuladores de sinais são substituídos no encerramento.

exit_on_timeout boolean

Esta é uma diretiva mod_php-only Apache1que força um subprocesso do Apache para sair se um execução PHP ocorre um timeout. Esse timeout causa uma chamada interna longjmp() no Apache1 que pode deixar alguma extensão em um estado inconscitente. Ao terminar o processo, será limpo de qualquer bloqueio pendente ou da memória.

Limite de Recursos

Limite de Recursos
Nome Padrão Modificável Changelog
memory_limit "128M" PHP_INI_ALL "8M" antes PHP 5.2.0, "16M" no PHP 5.2.0

Uma rápida explicação das diretivas de configuração.

memory_limit integer

Define a quantidade máxima de memória em bytes que um script está permitido alocar. Isto ajuda a previnir que scripts mal escritos consumam toda memória disponível no servidor. Note que para não ter limite de memória, defina esta diretiva para -1.

Antes do PHP 5.2.1, para utilizar esta diretiva é necessário que seja habilitado em tempo de execução usando --enable-memory-limit no linha de comando. Esta flag em tempo de execução também é necessária para definir as funções memory_get_usage() e memory_get_peak_usage() em versões anteriores à 5.2.1.

Quando um integer é utilizado, o valor é medido em bytes. A resumida notação, como descrito neste FAQ, pode também ser usada.

Veja também: max_execution_time.

Ajuste de Desempenho

Ajuste de Desempenho
Nome Padrão Modificável Changelog
realpath_cache_size "16K" PHP_INI_SYSTEM Disponível desde PHP 5.1.0.
realpath_cache_ttl "120" PHP_INI_SYSTEM Disponível desde PHP 5.1.0.

Uma rápida explicação das diretivas de configuração.

realpath_cache_size integer

Determina o tamanho de cache do realpath para ser usado pelo PHP. Este valor deve ser aumentado em sistemas onde PHP abre muitos arquivos, para refletir a quantidade das operações realizadas com os arquivos.

O tamanho representa o número total de bytes nos caminhos de strings armazenados, mais o tamanho associado ao registro de cache. Isto significa que para guardar caminhos longos no cache, o tamanho de cache precisa ser maior. Esse valor não controla diretamente o número de de caminhos distintos que pode ser cacheado.

O tamanho requerido para o registro de cache depende do sistema operacional.

realpath_cache_ttl integer

Tempo de duração (em segundos) para que o cache de informações do realpath para um dado arquivo ou diretório. Para sistemas que arquivos raramente mudam, considere aumentar o valor.

Manipulação de Dados

Opções de Manipulação de Dados
Nome Padrão Modificável Changelog
arg_separator.output "&" PHP_INI_ALL Disponível desde PHP 4.0.5.
arg_separator.input "&" PHP_INI_PERDIR Disponível desde PHP 4.0.5.
variables_order "EGPCS" PHP_INI_PERDIR PHP_INI_ALL no PHP <= 5.0.5.
request_order "" PHP_INI_PERDIR Disponível desde PHP 5.3.0
auto_globals_jit "1" PHP_INI_PERDIR Disponível desde PHP 5.0.0.
register_globals "0" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3. Removido no PHP 5.4.0.
register_argc_argv "1" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3.
register_long_arrays "1" PHP_INI_PERDIR Disponível desde PHP 5.0.0. Deprecated in PHP 5.3.0. Removido no PHP 5.4.0.
enable_post_data_reading "1" PHP_INI_PERDIR Disponível desde PHP 5.4.0
post_max_size "8M" PHP_INI_PERDIR PHP_INI_SYSTEM no PHP <= 4.2.3. Disponível desde PHP 4.0.3.
auto_prepend_file NULL PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3.
auto_append_file NULL PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3.
default_mimetype "text/html" PHP_INI_ALL  
default_charset "UTF-8" PHP_INI_ALL Padrão em "UTF-8" desde o PHP >= 5.6.0; vazio para para PHP < 5.6.0.
always_populate_raw_post_data "0" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3. Disponível desde PHP 4.1.0. Removido no PHP 7.0.0.

Uma rápida explicação das diretivas de configuração.

arg_separator.output string

O separador usado em URLs geradas pelo PHP para separar argumentos.

arg_separator.input string

Lista de separadores usados pelo PHP para analisar URLs de entrada em variáveis.

Nota:

Cada caracter na diretiva é considerado como separador!

variables_order string

Define a ordem de interpretação das variáveis EGPCS (Environment, Get, Post, Cookie, e Server). Por exemplo, se variables_order estiver defindo como "SP" então o PHP vai criar as variáveis superglobals $_SERVER e $_POST, mas não irá criar $_ENV, $_GET e $_COOKIE. Configurar para "" significa que superglobals não será definida.

Se a diretiva obsoleta register_globals está ativada, então variables_order também configura a ordem que as variáveis ENV, GET, POST, COOKIE e SERVER são preenchidas no escopo global. Por exemplo, se variables_order estiver definida para "EGPCS", register_globals está ativada, e ambos $_GET['action'] e $_POST['action'] estão definidos, então $action conterá o valor de $_POST['action'] como P vem depois G em nosso exemplo acima.

Aviso

Em ambos CGI e FastCGI SAPIs, $_SERVER é também preenchido por valores de ambiente; S é sempre equivalente à ES independentemente do lugar do E nesta diretiva.

Nota:

O conteúdo e ordem do $_REQUEST é também afetada por esta diretiva.

request_order string

Esta diretiva descreve a ordem na qual PHP regista as variáves GET, POST, e Cookie no array _REQUEST. Registro é feito da esquerda para direita, valores mais recentes sobreescrevem os valores antigos.

Se esta diretiva não está definida, variables_order é usado para conteúdo $_REQUEST.

Note que a distribuição padrão do arquivo php.ini não contém o 'C' para cookies, por motivos de segurança.

auto_globals_jit boolean

Quando ativado, as variáveis SERVER e ENV são criadas quando elas são usadas pela primeira vez ("Just In Time"), ao invés de quando o script inicia. Se estas variáveis não são usadas dentro de um script, esta diretiva resultará em um ganho de desempenho.

As diretivas PHP register_globals, register_long_arrays, e register_argc_argv devem ser desabilitadas para esta diretiva ter algum efeito. Desde PHP 5.1.3 não é necessário que register_argc_argv esteja desabilitado.

Aviso

Uso das variáveis SERVER e ENV é verificada durante tempo de compilação fazendo uso através e.g. variable variables não causará sua inicialização.

register_globals boolean

Configura se registra ou não a variáveis EGPCS (Environment, GET, POST, Cookie, Server) como variáveis globais.

A partir do » PHP 4.2.0, essa diretiva por padrão está desligada.

Veja o capitulo sobre segurança Utilizando register_globals para informações relacionadas.

Note que register_globals não pode ser modificado quando executando scripts (ini_set()). Você pode utilizar .htaccess caso seu host permita, como descrito acima. Um exemplo de como ficaria o .htaccess: php_flag register_globals off.

Nota:

register_globals é afetada pela diretiva variables_order.

Aviso

Esta funcionalidade tornou-se OBSOLETA desde o PHP 5.3.0 e foi REMOVIDA desde o PHP 5.4.0.

register_argc_argv boolean
Informa o PHP se deve declarar variáveis argv & argc (que podem conter informações de requisições GET). Veja também PHP em linha de comando.
register_long_arrays boolean
Informa o PHP sobre registrar ou não as obsoletas variáveis $HTTP_*_VARS como variáveis pré-definidas. Quando On (padrão), variáveis PHP pré-definidas como $HTTP_GET_VARS serão preenchidas. Se você não as está usando, é recomendado desligar essa diretiva por razões de performance. Em vez disso utiliza os arrays superglobais como $_GET. Essa diretiva se tornou disponível no PHP 5.0.0.
Aviso

Esta funcionalidade tornou-se OBSOLETA desde o PHP 5.3.0 e foi REMOVIDA desde o PHP 5.4.0.

enable_post_data_reading boolean
Desligando essa opção causa que $_POST e $_FILES não sejam preenchidos. A única forma de ler dados postados será através do stream php://input. Isso pode ser útil para transportar requisições proxy ou para processar dados POST de uma maneira eficiente em termos de memória alocada.
post_max_size integer
Configura o tamanho máximo dos dados postados. Essa configuração também afeta o upload de arquivos. Para receber upload de arquivos grandes, esse valor precisa ser maior que upload_max_filesize. De maneira geral memory_limit deve ser maior que post_max_size. Quando um integer é utilizado, o valor é medido em bytes. A resumida notação, como descrito neste FAQ, pode também ser usada. Se o dados postados forem maiores que post_max_size então as variáveis superglobals $_POST e $_FILES ficarão vazias. Isso pode ser observado de várias maneiras, por exemplo, por incluir uma variável no array $_GET ao chamar o script (chamar <form action="edit.php?processed=1">), então verificando se $_GET['processed'] está preenchido.

Nota:

O PHP permite sufixos para valores em bytes, incluindo K (kilo), M (mega) e G (giga). O PHP fará conversões automaticamente se você utilizar qualquer um desses. Cuidado para não exceder o limite de inteiros sinalizados de 32 bit (se utilizando versões de 32 bits) o que fará o script falhar.

Changelog for post_max_size
Versão Descrição
5.3.4 post_max_size = 0 não irá desligar o limite quando o conteúdo for do tipo application/x-www-form-urlencoded ou não estiver registrado no PHP.
5.3.2 , 5.2.12 Permite qualquer tamanho de dados postados ao configurar post_max_size to 0.

auto_prepend_file string

Especifica o nome do arquivo que automaticamente interpretado antes do arquivo principal. O arquivo é incluído como se tivesse sido chamado com require, então include_path é utilizado.

O valor especial none desativa a auto inclusão.

auto_append_file string

Especifica o nome do arquivo que é automaticamente interpretado depois do arquivo principal. O arquivo é incluído como se tivesse sido chamado com require, então include_path é utilizado.

O valor especial none desativa a auto inclusão.

Nota: Se o script for terminado com exit(), então a auto inclusão não ocorrerá.

default_mimetype string

Por padrão o PHP irá declarar um tipo de mídia utilizando o header Content-Type. Para desabilitar o envio da codificação configure essa opção para vazio.

O padrão interno é o media type text/html.

default_charset string

A partir do PHP 5.6, "UTF-8" é o valor default e esse valor é utilizado como a codificação de caracteres padrão para htmlentities(), html_entity_decode() e htmlspecialchars() no caso do parâmetro encoding for omitido. O valor de default_charset também será utilizado para configurar a codificação pardão para as funçõesiconv se as configurações iconv.input_encoding, iconv.output_encoding e iconv.internal_encoding estiverem vazias, e também para as funções mbstring se mbstring.http_input mbstring.http_output mbstring.internal_encoding estiverem vazias.

Todas as versões do PHP usarão esse valor como enviado no header padrão Content-Type caso não seja sobrescrito por uma chamada da função header().

Configurar default_charset para um valor padrão não é recomendado.

input_encoding string

Disponível desde o PHP 5.6.0. Essa configuração é utilizada para módulos multibyte como mbstring e iconv. Padrão é vazio.

output_encoding string

Disponível desde o PHP 5.6.0. Essa configuração é utilizada para módulos multibyte como mbstring e iconv. Padrão é vazio.

internal_encoding string

Disponível desde o PHP 5.6.0. Essa configuração é utilizada para módulos multibyte como mbstring e iconv. Padrão é vazio. Se vazio default_charset é utilizado.

always_populate_raw_post_data mixed
Aviso

Este recurso está OBSOLETO desde o PHP 5.6.0, e REMOVIDO desde o PHP 7.0.0.

Se configurado para TRUE, o PHP o sempre preencherá $HTTP_RAW_POST_DATA contento os dados POST puro. Caso contrário a variável é preenchida somente quando o tipo MIME dos dados não são reconhecidos.

O meio recomendado de acessar dados POST puro é através do php://input, sendo $HTTP_RAW_POST_DATA obsoleto desde o PHP 5.6.0 em diante. Configurando always_populate_raw_post_data para -1 irá evitar novos comportamentos implementados em futuras versões do PHP, como se $HTTP_RAW_POST_DATA nunca tivesse sido definido.

Independente da configuração, $HTTP_RAW_POST_DATA não está disponível quando enctype="multipart/form-data".

Veja também: magic_quotes_gpc, magic_quotes_runtime, e magic_quotes_sybase.

Paths and Directories

Caminhos e opções de diretório
Nome Padrão Modificável Changelog
include_path ".;/path/to/php/pear" PHP_INI_ALL  
open_basedir NULL PHP_INI_ALL PHP_INI_SYSTEM no PHP < 5.3.0
doc_root NULL PHP_INI_SYSTEM  
user_dir NULL PHP_INI_SYSTEM  
extension_dir "/path/to/php" PHP_INI_SYSTEM  
extension NULL php.ini only  
zend_extension NULL php.ini only  
zend_extension_debug NULL php.ini only Disponível antes do PHP 5.3.0.
zend_extension_debug_ts NULL php.ini only Disponível antes do PHP 5.3.0.
zend_extension_ts NULL php.ini only Disponível antes do PHP 5.3.0.
cgi.check_shebang_line "1" PHP_INI_SYSTEM Disponível desde PHP 5.2.0.
cgi.discard_path "0" PHP_INI_SYSTEM Disponível desde PHP 5.3.0.
cgi.fix_pathinfo "1" PHP_INI_SYSTEM Disponível desde PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1.
cgi.force_redirect "1" PHP_INI_SYSTEM Disponível desde PHP 4.2.0. PHP_INI_ALL prior to PHP 5.2.1.
cgi.nph "0" PHP_INI_SYSTEM Disponível desde PHP 5.3.0.
cgi.redirect_status_env NULL PHP_INI_SYSTEM Disponível desde PHP 4.2.0. PHP_INI_ALL prior to PHP 5.2.1.
cgi.rfc2616_headers "0" PHP_INI_ALL Disponível desde PHP 4.3.0.
fastcgi.impersonate "0" PHP_INI_SYSTEM Disponível desde PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1.
fastcgi.logging "1" PHP_INI_SYSTEM Disponível desde PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1.

Uma rápida explicação das diretivas de configuração.

include_path string

Especifica a lista de diretórios onde as funções require, include, fopen(), file(), readfile() e file_get_contents() procuração por arquivos. O formato é igual a variável de ambiente PATH: uma lista de diretórios separadas por virgula nos Unix e ponto e virgula no Windows.

O PHP considera cara item no include_path separadamente quando procurando por arquivos a incluir. Ele checará o primeiro caminho, e se não encontrar aqui, procurará no próximo e assim por diante, até que encontra o arquivo ou retorna um warning ou error. Você pode modificar o include_path durante a execução utilizando set_include_path().

Exemplo #1 include_path no Unix

include_path=".:/php/includes"

Exemplo #2 include_path no Windows

include_path=".;c:\php\includes"

Utilizar um . no include_path permite pesquisas relativas ao diretório atual. Entretanto é mais eficiente utilizar include './file' em vez de fazer o PHP procurar em vários diretórios em cada include.

Nota:

Variáveis ENV também estão acessíveis em arquivos .ini. Assim é possível referenciar o diretório home utilizando ${LOGIN} e ${USER}.

Variáveis de ambiente pode variar entre APIs de servidor por essas variáveis serem elas mesmas diferentes.

Exemplo #3 include_path utilizando variável de ambiente ${USER} no Unix

include_path = ".:${USER}/pear/php"

open_basedir string

Limita os arquivos que o PHP pode acessar para o diretório especificado, incluindo o próprio script. Essa diretiva NÃO é afetada pelo Safe Mode.

Quando um script tenta acessar o filesystem, por exemplo utilizando include ou fopen(), o caminho do arquivo é verificado. Quando o arquivo está fora do diretório especificado, o PHP irá recusar a acessá-lo. Todos os links simbólicos são resolvidos, então não é possível evitar essa restrição com um symlink. Se o arquivo não existir então o symlink não pode ser resolvido e então o nome do arquivo é comparado a um (resolvido) open_basedir .

open_basedir pode afetar mais que as funções de filesystem. Por exemplo se MySQL é configurado para utilizar os drivers mysqlnd, LOAD DATA INFILE será afetado por open_basedir . Muitas funcionalidades extendidas do PHP utilizamopen_basedir dessa maneira.

O valor especial . indica que o diretório atual do script pode ser utilizado como o diretório base. Isto é perigoso, no entanto, porque o diretório padrão do script pode ser facilmente alterado com chdir().

No httpd.conf, open_basedir pode ser desativado (por exemplo, em alguns hosts virtuais) da mesma forma que outras diretivas de configuração: "php_admin_value open_basedir none".

No Windows os diretórios são separados com um ponto e vírgula. Em todos os outros sistemas os diretórios são separados com dois pontos. Como um módulo Apache os caminhos de open_basedir de diferentes diretórios acima agora são automaticamente herdados.

As restrições especificadas com open_basedir são um nome de diretório desde o PHP 5.2.16 e 5.3.4. Versões anteriores permitiam também prefixos. Isto significa que "open_basedir = /dir/incl" também permitia acessar "/dir/include" e "/dir/incls" caso existissem. Quando desejasse restringir a diretórios específicos era preciso terminar o caminho com uma barra. Exemplo: open_basedir = /dir/incl/

O padrão é permitir que todos os arquivos podem ser abertos.

Nota:

A partir do PHP 5.3.0 o open_basedir pode ser afunilado durante a execução. Isto significa que se open_basedir é configurado para /www/ no php.ini então um script pode restringir a configuração para /www/tmp/ durante a execução com o ini_set(). Quanto há vários diretórios listados, você pode utilizar a constante PATH_SEPARATOR como um separador independente do sistema operacional.

doc_root string

O "diretório root" do PHP no servidor. Utilizado apenas se preenchido. Se o PHP estiver configurado com safe mode então nenhum arquivo fora desse diretório será servido. Se o PHP não estiver compilado com FORCE_REDIRECT, você deve configurar doc_root se estiver rodando o PHP em modo CGI em qualquer servidor web (exceção ao IIS). A alternativa é utilizar a configuração cgi.force_redirect abaixo.

user_dir string

O nome do diretório base utilizado como home do usuário para os arquivos do PHP, por exemplo public_html .

extension_dir string

O diretório no qual o PHP deve procurar por extensões carregadas dinamicamente. Veja tambémenable_dl, and dl().

extension string

Quais extensões carregáveis carregar quando o PHP inicia.

zend_extension string

Nome da extensão Zend carregável dinamicamente (por exemplo APD) a carregar quando o PHP inicia.

zend_extension_debug string

Variante de zend_extension para extensões compiladas com debug anteriores ao PHP 5.3.0.

zend_extension_debug_ts string

Variante de zend_extension para extensões compiladas com debug e thread safety anteriores ao PHP 5.3.0.

zend_extension_ts string

Variante de zend_extension para extensões compiladas com thread safety anteriores ao PHP 5.3.0.

cgi.check_shebang_line boolean

Controla se CGI o PHP verifica por linhas iniciando com #! (shebang) no topo de scripts. Essa linha pode ser necessária se o script suporta execução tanto com script como via PHP CGI. O PHP em modo CGI pula essa linha e ignora seu conteúdo caso esta diretiva esteja ligada.

cgi.discard_path boolean

Se ativado, o binário do PHP CGI binary pode ser posicionado seguramente fora da diretório web e não será possível de contornar a segurança .htaccess.

cgi.fix_pathinfo boolean

Informa caminhos reais em PATH_INFO/ PATH_TRANSLATED em modo CGI. O comportamento anterior do PHP era configurarPATH_TRANSLATED em SCRIPT_FILENAME, sem interpretar PATH_INFO . Para mais informações sobre PATH_INFO, veja o modo CGI. Configurando para 1 fará o modo CGI corrigir os caminhos para conformar com a especificação. Configurar com zero faz o PHP se comportar como antes. O padrão é ligado. Você deve consertar seus scripts de forma a usar SCRIPT_FILENAME ao inves de PATH_TRANSLATED.

cgi.force_redirect boolean

cgi.force_redirect é necessário para prover segurança ao rodar PHP em modo CGI na maioria dos servidores web. Por padrão essa configuração está ligada. Você pode desligá-la sob seu total risco .

Nota:

No Windows: Quando utilizando IIS essa opção deve ser desligada. O mesmo valendo para servidores OmniHTTPD e Xitami.

cgi.nph boolean

Se cgi.nph estiver ativo então sempre será emitido um Status: 200 em cada requisição.

cgi.redirect_status_env string

Se cgi.force_redirect estiver ativo e rodando sob servidores Apache ou Netscape (iPlanet), você talvez tenha de configurar uma variável de ambiente que o PHP verificará antes de continuar a execução.

Nota:

Configurar essa variável pode causar problemas de segurança, tenha certeza do que está fazendo antes de alterar.

cgi.rfc2616_headers int

Instrui o PHP a qual tipo de headers enviar nas respostas HTTP. Se 0 o PHP envia um header » RFC 3875 "Status:" que é suportado pelo Apache e outros servidores web. Quando essa opção está configurada para 1 o PHP enviará um header no padrão » RFC 2616

Se essa opção estiver ativada e estiver rodando o PHP em um ambiente CGI (por exemplo, PHP-FPM) você não deve utilizar headers no padrão RFC 2616, utilizando ao invés o seu equivalente RFC 3875: em vez de header("HTTP/1.0 404 Not found"); você deve usar header("Status: 404 Not Found");

Deixe em 0 a não ser que saiba exatamente o que está fazendo.

fastcgi.impersonate string

FastCGI sob o IIS (em WINNT) permite falsificar os tokens de segurança do cliente. Isso permite ao IIS de definir o contexto de segurança no qual a requisição executa. O mod_fastcgi sob o Apache não suporta essa funcionalidade (17/03/2002) Configure para 1 sob o ISS. Padrão é zero.

fastcgi.logging boolean

Ativa o log SAPI logging quando utilizando o FastCGI. O padrão é ativado.

Upload de arquivos

Configurações de upload de arquivos
Nome Padrão Modificável Changelog
file_uploads "1" PHP_INI_SYSTEM PHP_INI_ALL in PHP <= 4.2.3. Disponível desde PHP 4.0.3.
upload_tmp_dir NULL PHP_INI_SYSTEM  
max_input_nesting_level 64 PHP_INI_PERDIR Disponível desde PHP 5.3.9.
max_input_vars 1000 PHP_INI_PERDIR Disponível desde PHP 5.3.9.
upload_max_filesize "2M" PHP_INI_PERDIR PHP_INI_ALL in PHP <= 4.2.3.
max_file_uploads 20 PHP_INI_SYSTEM Disponível desde PHP 5.2.12.

Uma rápida explicação das diretivas de configuração.

file_uploads boolean

Se permite ou não upload de arquivos. Veja também as diretivas upload_max_filesize, upload_tmp_dir e post_max_size.

upload_tmp_dir string

O diretório temporário utilizado para armazenas arquivos durante o upload. Precisa ter permissão de escrita para o usuários qual o PHP estiver rodando. Se não especificado o PHP usará o padrão de sistema.

Se o diretório especificado não tiver acesso de escrita, o PHP tenta o diretório temporário do sistema. Se open_basedir estiver ativo então o diretório temporário do sistema deve estar listado para que o upload aconteça.

upload_max_filesize integer

O tamanho máximo de um arquivo enviado.

Quando um integer é utilizado, o valor é medido em bytes. A resumida notação, como descrito neste FAQ, pode também ser usada.
max_file_uploads integer

O número máximo de arquivos simultâneos durante um upload. A partir do PHP 5.3.4 os campos em branco de arquivos não são contados para efeito desse limite.

SQL Geral

Configurações gerais de SQL
Nome Padrão Modificável Changelog
sql.safe_mode "0" PHP_INI_SYSTEM  

Uma rápida explicação das diretivas de configuração.

sql.safe_mode boolean

Se ativo as conexões de bancos de dados que especifiquem valores padrão usarão esses valores no lugar de qualquer argumento passado. Para detalhes desses valores padrão, veja a documentação específica dessa funções de conexão.

Windows

Configurações específicas no Windows
Nome Padrão Modificável Changelog
windows.show_crt_warning "0" PHP_INI_ALL Disponível desde PHP 5.4.0.

Uma rápida explicação das diretivas de configuração.

windows.show_crt_warning boolean

Essa diretiva exibe alertas CRT quando ativa. Esses alertas serão exibidos por padrão até o PHP 5.4.0.


php.ini directives
PHP Manual