Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Entenda o php.ini

Recommended Posts

Entenda o php.ini e como funciona

 

php.ini mais atual é esse:php.ini

 

Para um melhor entendimento postarei links do manual do php

assim nao preciso explicar uma coisa que ja esta no manual e de facil entendimento.

 

manual do php:

O php.ini é o arquivo de configuração do php, e ele é lido quando o php é iniciado.
Quando o php esta rodando como modulo o php.ini é lido apenas quando o servidor é iniciado.
para as versões CGI e CLI, isso acontece cada vez que eles são chamados.

 

Nota: O servidor web Apache muda o diretório para a raiz ao ser iniciado, fazendo com que o PHP tente ler o arquivo php.ini da raiz do sistema de arquivos se esta existir.

 

nem todas as diretivas do PHP são documentados no manual. Para uma lista completa das diretivas disponíveis na sua versão do PHP, 
por favor leia seu arquivo php.ini que é bem comentado.

; qualquer texto em uma linha após ponto-e-vírgula sem aspas é ignorado isso significa um comentario

 

Como modificar valores de configuração

Executando PHP como um módulo do Apache

 

http://br2.php.net/manual/pt_BR/configuration.changes.php

 

para um conhecimento melhor leia:

 

http://br2.php.net/manual/pt_BR/configurat...figuration.file

 

ini_set

http://br2.php.net/manual/pt_BR/function.ini-set.php

 

dl -- Carrega uma extensão do PHP durante a execução

http://br2.php.net/manual/pt_BR/function.dl.php

 

Apêndice H. Lista de diretivas principais do arquivo php.ini

http://br2.php.net/manual/pt_BR/ini.php

 

bom agora vamos estudar algumas linha do php.ini só irei explicar as linhas que realmente interessa para um usuario comun e nao um servidor

 

com base no php.ini atual:

 

#Linha 75

<span style='color:DarkBlue'>zend.ze1_compatibility_mode = Off</span>

Permite modo de compatibilidade com o Zend Engine 1 (PHP 4). Afeta clonagem, conversão e comparação de objetos.

 

#Linha 86

<span style='color:DarkBlue'>asp_tags = Off</span>

 

nessa linha se você deixar em on você habilita as tags de asp para ser usado com o php exemplo:

<span style='color:red'><% %> </span>

 

#Linha 218

<span style='color:DarkBlue'>Syntax Highlighting mode</span>

essas configurações mudam o efeito de cores da funções highlight_string() e highlight_file()

 

#Linha 237

<span style='color:DarkBlue'>expose_php = On</span>

 

Em geral, segurança por obscuridão é uma das mais fracas formas de segurança. Mas em alguns casos, cada pequeno bit extra de segurança é desejável.

 

Algumas poucas técnicas simples podem ajudar a esconder o PHP, possivelmente atrasando um invasor que está tentando descobrir fraquezas em seu sistema. Setando expose_php = off em seu arquivo php.ini, você reduz a quantidade de informação disponível para ele.

 

#Linha 292

<span style='color:DarkBlue'>error_reporting</span>

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

error_reporting -- Define quais erros serão reportados

error_reporting()

 

#Linha 299

<span style='color:DarkBlue'>display_errors = On</span>

se tiver off deixe display_errors = On para programar

Isto determina quando os erros devem ser mostrados como parte da saída ou se devem ser escondidos do usuário. 
Nota: Isto serve para suportar o seu desenvolvimento e nunca deve ser usado em sistemas de produção (ex. sistemas conectados a internet).

 

#Linha 304

<span style='color:DarkBlue'>display_startup_errors = Off</span>

Mesmo quando display_errors esta em on, erros que aconteçam durante a inicialização do PHP não são mostrados. É fortemente recomendado manter display_startup_errors em off, exceto para procurar erros.

 

#Linha 309

<span style='color:DarkBlue'>log_errors = Off</span>

Indica se as mensagens de erro do script devem ficar no log de erros do servidor ou em error_log. Esta opção depende do servidor. 
Nota: Você é fortemente avisado para usar o log de erros ao invés de mostra-los em web sites de produção.

 

#Linha 313

<span style='color:DarkBlue'>log_errors_max_len = 1024</span>

Define o limite de tamanho da mensagem de erro para logar em bytes. Em error_log é adicionada informação sobre a fonte. O padrão é 1024 e 0 permite que não seja estabelecido nenhum limite.

 

#Linha 317

<span style='color:DarkBlue'>ignore_repeated_errors = Off</span>

Não loga mensagens repetidas. Erros repetidos devem acontecer no mesmo arquivo na mesma linha enquanto ignore_repeated_source estiver em true.

 

#Linha 322

<span style='color:DarkBlue'>ignore_repeated_source = Off</span>

Ignora a fonte da mensagem quando estiver ignorando mensagens repetidos. Quando esta definição ON não irá logar mensagens de erros repetidas de arquivos diferentes ou linhas diferentes.

 

#Linha 327

<span style='color:DarkBlue'>report_memleaks = On</span>

Se este parâmetro estiver em Off, quando acontecerem memory leaks não será mostrado (na saída ou no log). Isto só tem efeito numa compilação de debug, e se error_reporting incluir E_WARNING na lista de permitidos.

 

#Linha 330

<span style='color:DarkBlue'>track_errors = Off php5</span>

PHP5 Se ativado, a última mensagem de erro sempre estará disponível na variável <span style='color:DarkBlue'>$php_errormsg.</span>
#Linha 334

<span style='color:DarkBlue'>html_errors = Off</span>

Desativa as tags HTML nas mensagens de erro. O novo formato de mensagens de erro em HTML produz mensagens que podem ser clicadas e que direcionam o usuário para uma pagina descrevendo o erro ou a função que causou o erro. Estas referencias são afetadas por docref_root e docref_ext.

 

#Linha 343

<span style='color:DarkBlue'>docref_root = "path_manualphp/"</span>

#Linha 344

<span style='color:DarkBlue'>docref_ext = .html</span>

O novo formato de mensagens de erro em HTML produz mensagens que podem ser clicadas e que direcionam o usuário para uma pagina descrevendo o erro ou a função que causou o erro. No caso de paginas de manual você pode baixar o manual na sua língua e definir esta diretiva para a sua cópia local. Se a sua cópia local do manual podur ser acessada por '/manual/' você pode simplesmente usar docref_root=/manual/. Adicionalmente você deve definir docref_ext para ser igual a extensão da sua cópia docref_ext=.html. É possível usar referencias externas. Por exemplo, você pode usar docref_root=http://manual/en/ ou docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F" 

A maior parte do tempo você deve querer que o valor de docref_root termine com uma barra '/'. Mas veja o segundo exemplo acima o qual não tem ou não necessita isso.

 

Nota: Isto é para suportar o seu desenvolvimento já que torna mais fácil encontrar a descrição de uma função. Entretando não deve ser usado em sistemas de produção (ex. sistemas conectados na internet).

 

docref_ext string

Veja docref_root.

 

Nota: O valor de docref_ext deve começar com um ponto '.'.

 

#Linha 347

<span style='color:DarkBlue'>error_prepend_string = "<font color=ff0000>"</span>

#Linha 350

<span style='color:DarkBlue'>error_append_string = "</font>"</span>

formatação da string da mensagem de erro

para manter o padrao XHTML use:

<span style="color: #ff0000">

</span>

 

#Linha 353

<span style='color:DarkBlue'>error_log = filename</span>

#Linha 356

<span style='color:DarkBlue'>error_log = syslog</span>

O nome do arquivo onde os erros do script serão logados. Se o valor especial syslog é usado, os erros são enviados para o log do sistema. No UNIX, isto indica syslog(3) e no Windows NT isto indica o log do evento. O log de sistema não é suportado no Windows 95. Veja também: [url=http://php.net/syslog]syslog()[/url].

 

#Linha 389

<span style='color:DarkBlue'>register_globals = Off </span>

Usando Register Globals

Talvez a mudança mais controversa no PHP é quando o valor padrão para a diretiva do PHP register_globals passou de <span style='color:DarkBlue'>ON</span> para <span style='color:red'>OFF</span> no PHP 4.2.0. Confiança nesta está diretiva foi bastante pública e muitas pessoas nem mesmo sabiam que ela existia e assumiam que ela é apenas a forma como o PHP trabalha. Esta página irá explicar como alguém pode escrever um código inseguro com esta diretiva, mas mantenha em mente que a diretiva por si só não é insegura, mas o seu uso incorreto sim.

 

<span style='color:red'>Quando register_globals esta em on injetará (veneno) em seus scripts</span>, todos os tipos de variáveis, como variáveis request de formulários HTML. Isto junta-se com o fato deo PHP não exigir inicialização de variáveis siginifica que escrever códigos inseguros é muito mais fácil. Não foi uma decisão difícil, mas a comunidade PHP decidiu, por definição, desabilitar esta diretiva. Quando on, as pessoas usavam variáveis ainda sem saber realmente, com certeza, de onde elas vinham e podiam apenas supor. Variáveis internas que estão definidas no próprio script conseguem se misturar com dados requisitados enviados pelos usuários e desabilitando register_globals muda isto. Vamos demonstrar com um exemplo de mal uso de register_globals:

 

Exemplo de uso incorreto com register_globals = on

 

<!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css">

  1. <?php
  2. <span style=' color: DarkGray;'>// definir $authorized = true apenas se o usuário está autenticado</span>
  3. if (authenticated_user<span style=' color: green;'>()</span>) {
  4. $authorized = true;
  5. }

  6. <span style=' color: DarkGray;'>// Por isso nós primeiro não inicializamos $authorized como false, isto poderia</span>
  7. <span style=' color: DarkGray;'>// ser definido através de register_globals, como por GET auth.php?authorized=1 </span>
  8. <span style=' color: DarkGray;'>// então, qualquer um pode ser visto como autenticado!</span>
  9. if <span style=' color: green;'>($authorized)</span> {
  10. include "/highly/sensitive/data.php";
  11. }
  12. ?>

<!--php2--></div><!--ephp2-->

 

Quando register_globals = on, nossa lógica acima pode ser comprometida. Quando off, $authorized não pode ser setada via request portanto isto é mais agradável, apesar disso é realmente uma boa prática de programação inicializar as variáveis primeiro. Por exemplo, em nosso exemplo acima nós poderíamos ter feito primeiro $authorized = false. Fazendo isto primeiro significa que nosso código acima trabalharia com register_globals on ou off enquanto usuários, por definição, estariam desautorizados. 

Um outro exemplo é aquele das sessões. Quando register_globals = on, nós poderíamos também usar $username em nosso exemplo abaixo, mas novamente você deve imaginar que $username poderia, também, vir de outros meios, tal como GET (pela URL).

 

Exemplo de uso de sessões com register_globals on ou off

 

<!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css">

  1. <?php
  2. <span style=' color: DarkGray;'>// Nós saberíamos de onde $username veio, mas fazer com $_SESSION é </span>
  3. <span style=' color: DarkGray;'>// para dados de sessão </span>
  4. if (isset<span style=' color: green;'>($_SESSION['username'])</span>) {

  5. echo "Olá <b>{$_SESSION<span style=' color: green;'><span style=' color: green;'>['username']</span>}</b>"</span>;

  6. else {

  7. echo "Olá <b>Guest</b><br />";
  8. echo "Você gostaria de logar?";

  9. }
  10. ?>

<!--php2--></div><!--ephp2-->

 

É até possível tomar medidas preventivas para quando a formação de variável está sob tentativa. Se você já sabe de antemão de onde a variável está vindo, você pode ver se os dados submetidos está vindo de um tipo de submissão impróprio. Enquanto não está garantido que dados não foram formados, ele exige a um atacante que advinhe o tipo correto de formação da variável. Se você toma cuidado de onde os dados requisitados vêm, você pode usar $_REQUEST já que ele contém um misto de dados GET, POST e COOKIE.

 

#Linha 452

<span style='color:DarkBlue'>;include_path = ".:/php/includes"</span> UNIX

#Linha 455

<span style='color:DarkBlue'>;include_path = ".;c:\php\includes"</span> WINDOWS

 

Especifica a lista de diretórios onde as funções [b]require()[/b], [b]include()[/b] e fopen_with_path() procuram por arquivos. O formato deve ser igual ao da variável PATH do sistema: uma lista de diretórios separados por vírgula no Unix e ponto-e-vírgula no Windows. 

Exemplo H-1. Unix include_path

include_path=".:/php/includes"

Exemplo H-2. Windows include_path

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

Uso de . no caminho de inclusão (include path) permite que includes usando caminho relativo em relação ao diretório atual.

 

#Linha 469

<span style='color:DarkBlue'>extension_dir = "./"</span>

 

coloque o path das dll do php exemplo c:/bin/php/ext

 

#Linha 519

<span style='color:DarkBlue'>upload_tmp_dir =</span>

descomente e coloque o path pra onde ira salvar os arquivos tmp de upload exemplo c:/windows/temp

 

#Linha 577

lista de extensoes caso você precise usar alguma delas só descomentar a linha

 

para usar o MySQLi acrescente essa linha:

extension=php_mysqli.dll

 

#Linhas 577 a 609:

 

;extension=php_mbstring.dll

;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_dba.dll

;extension=php_dbase.dll

;extension=php_exif.dll

;extension=php_fdf.dll

;extension=php_filepro.dll

;extension=php_gd2.dll

;extension=php_gettext.dll

;extension=php_ifx.dll

;extension=php_imap.dll

;extension=php_interbase.dll

;extension=php_ldap.dll

;extension=php_mcrypt.dll

;extension=php_mhash.dll

;extension=php_mime_magic.dll

;extension=php_ming.dll

;extension=php_mssql.dll

;extension=php_msql.dll

;extension=php_mysql.dll

;extension=php_mysqli.dll

;extension=php_oci8.dll

;extension=php_openssl.dll

;extension=php_oracle.dll

;extension=php_pgsql.dll

;extension=php_shmop.dll

;extension=php_snmp.dll

;extension=php_sockets.dll

;extension=php_sybase_ct.dll

;extension=php_tidy.dll

;extension=php_xmlrpc.dll

;extension=php_xsl.dll

e se você for usar a extensao exif extension=php_exif.dll recorte o extension=php_mbstring.dll e deixe ele antes

da extensao extension=php_exif.dll senao nao funcionara o exif exemplo:

 

se for o php.ini atual ele ja vem corrigido

 

#Linha 627

<span style='color:DarkBlue'>SMTP = localhost</span>

coloque o seu smtp valido exemplo smtp.terra.com.br

 

#Linha 631

<span style='color:DarkBlue'>;sendmail_from = me@example.com</span>

coloque o seu email

 

#Linha 888

<span style='color:DarkBlue'>;session.save_path = "/tmp"</span>

coloque o path onde sera salvo as temp do session

exemplo c:/windows/temp

 

bom é isso ai ate o proximo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa materia master, =Dacrescentou muitas coisas que eu nao sabia || nao tinha certeza. Estava lendo no php.net e achei o ini_set um tanto quanto prejudical em alguns pontos para o servidor que quer deixar uma configuracao apenas e pensa estar protegido, mas deixa isso pra falar no msn neh,[]sObs: Esse artigo dá de 10 a 0 naquele otro daquele carinha que a gente viw hehehe... luis fernando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não presciso nem falar quem foi que postou ... parabens pelo post eu não sabia do lance da extension=php_mbstring.dll ser antes da extension=php_exif.dll, como sempre aprendendo com vcs.um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colegas,

 

Estou precisando de uma pequena ajuda!

Gostaria de colocar em meu site um sistema no qual precisa de algumas configurações.

Acho que tenho que alterar o php.ini... como faço?

O php.ini fica onde?

 

O erro que está dando na instalação se encontra no seguinte endereço:

http://projetos.webzan.com.br/install/index.php

 

Desde já agradeço as respostas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nem tudo pra configuirar via script depende do que seja só editando o php.ini diretamente

 

PHP_INI_USER = A entrada pode ser definida em scripts do usuário

PHP_INI_PERDIR = A entrada pode ser definida em php.ini, .htaccess ou httpd.conf

PHP_INI_SYSTEM = A entrada pode ser definida em php.ini ou httpd.conf

PHP_INI_ALL = A entrada pode ser definida em qualquer lugar

 

http://br2.php.net/manual/pt_BR/function.ini-set.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Guto o PHP para acompanhar as novas funções que foram implementadas depois da versao 4.1 em diante do mysql ele criou a função mysqli para alem de atender o mysql mais novos aproveitou e incrementou um monte de melhorias e usando metodos e classes mais definidas e funcionais um exemplo foi a eliminação da função "mysql_select_db", porque na verdade isso era uma gambiarra das feias nenhuma outra linguaguem faz assim, para conectar num banco de dados sempre se usou a string completa com nome, senha, servidor e nome do banco tudo junto, mas do jeito do php que usava nao fazia sentido algum, mas fora isso a classe mysqli tem muitos recursos e vantagens de uso e só lembrando só funciona com php5 e mysql acima do 4.1.x

 

obs: e para manter compatibilidade ele manteve as outras funções antigas (mysql_) e criou a nova mysqli_

 

http://www.php.net/mysqli

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizo servidor em casa para fazer testes das minhas páginas PHP.Nesse "servidor" de teste é plataforma Windows, para isso então terei que utilizar um servidor SMTP para Windows caso eu queira testar a função mail?Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Fabio, estou programando php em ambiente Linux, quando eu erro uma simples ";" o código não está sendo debugado, ou seja, fica dificil trabalhar assim, tem alguma coisa que eu possa configurar no php.ini para o código ser debugado quando eu rodar o programa ???

 

 

att

 

Zaptool

 

 

se você tiver uma conta de email pode usar o smtp dela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só prestar atenção no proprio topico

 

#Linha 299

display_errors = On

se tiver off deixe display_errors = On para programar

 

Isto determina quando os erros devem ser mostrados como parte da saída ou se devem ser escondidos do usuário. 
Nota: Isto serve para suportar o seu desenvolvimento e nunca deve ser usado em sistemas de produção (ex. sistemas conectados a internet).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.