Codex


Instalação

Esta seção contém perguntas comuns na maneira de como instalar o PHP. PHP é aceito em vários Sistemas Operacionais (talvez, com exceção do MacOS antes do OSX), e praticamente qualquer servidor Web.

Para instalar o PHP, Siga as instruções no Instalação e Configuração.

  • Por que não deveríamos usar o Apache2 com um threaded MPM em um ambiente de produção?
  • Unix/Windows: Onde deveria estar localizado meu arquivo php.ini?
  • Unix: Eu instalei o PHP, mas toda vez que carrego um documento, recebo a menssagem 'Document Contains No Data'! O quê está acontecendo?
  • Unix: Eu instalei o PHP usando RPMS, mas o Apache não esta processando as páginas PHP! O que esta acontecendo aqui?
  • Unix: Eu corrigi o Apache com os patch de extensões FrontPage, e repentinamente o PHP parou de funcionar. PHP é imcompátivel com as extensões Apache FrontPage?
  • Unix/Windows: Eu tenho o PHP instalado, mas quando tento acessar um arquivo de script PHP através de meu browser, recebo uma tela em branco.
  • Unix/Windows: Eu tenho o PHP instalado, mas quando tento acessar um arquivo script do PHP através do meu browser, recebo um erro do servidor 500.
  • Alguns sistemas operacionais: Eu instalei o PHP sem erro, mas quando eu tento iniciar o Apache recebo erros de undefined symbol: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  • Windows: Eu instalei o PHP, mas quando tento acessar um arquivo script do PHP através do meu browser eu recebo um erro: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  • Windows: Eu segui todas as instruções, mas ainda não consegui fazer o PHP e o IIS trabalharem juntos!
  • Quando executo PHP como CGI com IIS, PWS, OmniHTTPD ou Xitami, recebo em seguida um erro: Security Alert! PHP CGI cannot be accessed directly..
  • Como eu sei se meu php.ini esta sendo encontrado e lido? Parece que ele não é como as minhas alterações que não estão sendo implementadas.
  • Como eu adiciono meu diretório PHP no PATH do Windows?
  • Como eu faço para o arquivo php.ini ficar disponível para o PHP no Windows?
  • É possivel usar o Apache negociação de conteúdo (opção MultiViews) com PHP?
  • PHP é limitado a processar apenas os métodos de requisições GET e POST?
  • Por que não deveríamos usar o Apache2 com um threaded MPM em um ambiente de produção?

    PHP é como cola. É uma cola usada para construir aplicações web legais unindo dezenas de bibliotecas de terceiros e fazendo tudo aparecer como uma entidade coerente, através de uma interface intuitiva e fácil de aprender. A flexibilidade e poder do PHP confia na estabilidade e robustez da plataforma subjacente. Necessita de um sistema operacional, um servidor web e bibliotecas de terceiros para trabalhar em conjunto. Quando qualquer um desses elementos para de funcionar o PHP precisa encontrar meios de identificar e remediar esses problemas rapidamente. Quando criamos uma arquitetura subjacente mais complexa, por não ter completa separação da execução de tarefas, separação de segmentos de memória e um forte sandbox para cada requisição realizada, mais problemas são introduzidos ao ecossistema do PHP.

    Se quiser utilizar uma MPM threaded, veja a configuração FastCGI onde o PHP será executado em um espaço de memória próprio.

    Unix/Windows: Onde deveria estar localizado meu arquivo php.ini?

    Por padrão no Unix deve estar no /usr/local/lib Que é o <install-path>/lib. Maioria das pessoas vão querer mudar isso no tempo de compilação com o --with-config-file-path flag. Poderíamos, por exemplo, adicionar algo como:

    --with-config-file-path=/etc
    E então poderíamos copiar php.ini-development do local de origem da instalação para /etc/php.ini e editá-lo para fazer quaisquer alterações locais que desejássemos.

    --with-config-file-scan-dir=PATH

    No Windows, o caminho padrão para o arquivo php.ini é o diretório Windows. Se estivermos usando o servidor web Apache, php.ini é procurado primeiro no diretório de instalação do Apache, e.g. C:\program files\apache group\apache. Desta maneira, poderíamos ter diferentes arquivos php.ini para diferentes versões do Apache na mesma máquina.

    Olhe também o capítulo sobre a configuração do arquivo.

    Unix: Eu instalei o PHP, mas toda vez que carrego um documento, recebo a menssagem 'Document Contains No Data'! O quê está acontecendo?

    Isso provavelmente significa que o PHP está tendo algum tipo de problema e sofrendo um core dump (fim com despejo de memória). Olhe nos logs de erro do servidor web para ver se este é o caso e tentar reproduzir o problema com um pequeno caso teste. Se você souber como usar 'gdb' será muito útil para fornecer um backtrace com o relato do erro (bug report) e assim ajudar desenvolvedores a indentificar o problema. Se estiver usando o PHP como um módulo do Apache tente algo como:

    • Pare seus processos httpd

    • gdb httpd

    • Pare seus processos httpd

    • > execute -X -f /path/to/httpd.conf

    • Então busque a URL que esta causando problemas com seu browser.

    • > execute -X -f /path/to/httpd.conf

    • Se estiver recebendo um core dump, o gdb deverá informar sobre isso agora

    • type: bt

    • Deve-se incluir o seu backtrace no seu relatório. Envie esses dados para » http://bugs.php.net/

    Se o seu script usa as funções de expressões regulares ( preg_match() e demais), você deve ter certeza que compilou PHP e Apache com a mesma versão do pacote da expressão regular. Isso deve acontecer automaticamente com o PHP e Apache 1.3.x

    Unix: Eu instalei o PHP usando RPMS, mas o Apache não esta processando as páginas PHP! O que esta acontecendo aqui?

    Supondo que você instalou tanto o Apache quanto o PHP, a partir dos pacotes RPM, você precisa descomentar ou adicionar algumas ou todas as seguintes linhas em seu arquivo httpd.conf:

    # Módulos extra
    AddModule mod_php.c
    AddModule mod_perl.c
    # Módulos extra
    LoadModule php_module         modules/mod_php.so
    LoadModule php5_module        modules/libphp5.so
    LoadModule perl_module        modules/libperl.so
    E adicione:
    AddType application/x-httpd-php .php
    ... para as propriedades globais, ou para as propriedades do VirtualDomain você deseja ter suporte do PHP adicionado.

    Unix: Eu corrigi o Apache com os patch de extensões FrontPage, e repentinamente o PHP parou de funcionar. PHP é imcompátivel com as extensões Apache FrontPage?

    Não, PHP trabalha bem com as extensões FrontPage. O problema é que o patch do FrontPage modifica diversas estruturas Apache, que se baseia em PHP. Recompile o PHP (usando 'make clean ; make') depois do patch FP aplicado, deve resolver o problema.

    Unix/Windows: Eu tenho o PHP instalado, mas quando tento acessar um arquivo de script PHP através de meu browser, recebo uma tela em branco.

    Faça um 'view source' no navegador web e provavelmente achará que poderá ver o código fonte PHP. Isto significa que o seu servidor web não enviou o script para o interpretador do PHP. Algo está errado com as configurações do seu servidor - verifique novamente as suas configurações de servidor, baseado nas intruções de instalação do PHP.

    Unix/Windows: Eu tenho o PHP instalado, mas quando tento acessar um arquivo script do PHP através do meu browser, recebo um erro do servidor 500.

    Alguma coisa correu mal quando o servidor tentou executar o PHP. Para ver uma mensagem de erro razoável na linha de comando, mude para o diretório que contém o executável do PHP (php.exe no Windows) e executar php -i. Se o PHP tiver algum problema de execução, então uma mensagem adequada será exibida, o que lhe dará pistas do que precisa ser feito em seguida. Se você receber uma tela cheia de códigos HTML (a saída da função phpinfo()) então o PHP esta funcionando, e seu problema pode ser relatado para a configuração do seu servidor que você deve verificar novamente.

    Alguns sistemas operacionais: Eu instalei o PHP sem erro, mas quando eu tento iniciar o Apache recebo erros de undefined symbol:
    [mybox:user /src/php5] root# apachectl configtest
    apachectl: /usr/local/apache/bin/httpd Undefined symbols:
     _compress
     _uncompress

    Isto não tem nada a ver com o PHP, mas com as bibliotecas do cliente MySQL. Algumas necessitam --with-zlib , outras não. Esta é tambem abrangida pelo FAQ MySQL.

    Windows: Eu instalei o PHP, mas quando tento acessar um arquivo script do PHP através do meu browser eu recebo um erro:
    cgi error:
    The specified CGI application misbehaved by not
    returning a complete set of HTTP headers.
    The headers it did return are:
    

    Esta mensagem de erro significa que o PHP falhou de gerar qualquer saída. Para começar a ver uma mensagem de erro sensata, para a linha de comando, mude para o diretório que tem o executável PHP (php.exe no Windows) e execute php -i. Se o PHP estiver com algum problema na execução, em seguida, uma mensagem de erro adequada será exibida o que lhe dará uma idéia do que precisa ser feito em seguida. Se você receber uma tela cheia de códigos HTML (a saída da função phpinfo() ) então o PHP está funcionando.

    Uma vez que o PHP está trabalhando na linha do comando, tente acessar o script via navegador novamente. Se ele ainda falhar, então pode ser um dos seguintes:

    • Permissões de arquivo no seu script PHP, php.exe, php5ts.dll, php.ini ou qualquer extensão do PHP que você esta tentando carregar são tais que um usuário anônimo não pode acessar ISUR_<machinename>.
    • O arquivo de script não existe (ou provavelmente não está no diretório root do seu servidor web). Note que para o IIS você pode interceptar o erro marcando a opção 'verificar se o arquivo existe' quando configurar o script de mapeamento do Gerenciador de Serviços de Internet. Se o script não existir, então, o servidor web irá retornar um erro 404. Há também o benefício adicional que o IIS tentará fazer qualquer autenticação exigida para você, baseado nas permissões NTLanMan no seuarquivo de script.
    Windows: Eu segui todas as instruções, mas ainda não consegui fazer o PHP e o IIS trabalharem juntos!

    Certifique-se que qualquer usuário que precise executar um script PHP tem o direito de executar php.exe! O IIS usa um usuário anônimo que é adicionado no momento que o IIS é instalado. Este usuário precisa de direitos do php.exe. Qualquer usuário autenticado também terá direito a executar php.exe. E para IIS4 você precisa dizer ao PHP que é um mecanismo script. Você também, vai querer ler esta FAQ.

    Quando executo PHP como CGI com IIS, PWS, OmniHTTPD ou Xitami, recebo em seguida um erro: Security Alert! PHP CGI cannot be accessed directly..

    Você deve definir a diretiva cgi.force_redirect para 0. O padrão é 1, então certifique-se que a directiva não está comentada (com um ;). Como todas as diretivas, isso é definido no php.ini

    Pelo fato do padrão ser 1, é fundamental que você esteja 100% certo de que o arquivo php.ini correto está sendo lido. Leia este faq para detalhes.

    Como eu sei se meu php.ini esta sendo encontrado e lido? Parece que ele não é como as minhas alterações que não estão sendo implementadas.

    Para ter certeza que seu php.ini está sendo lido pelo PHP, faça uma chamada para phpinfo(). Perto do topo, haverá uma lista chamada Configuration File (php.ini). Isto irá dizer-lhe onde o PHP está procurando php.ini e se está sendo lido ou não. Se apenas um diretório do PATH existe, então não está sendo lido e você deve colocar seu php.ini no diretório. Se php.ini está incluso dentro do PATH, ele está sendo lido.

    Se php.ini está sendo lido e seu PHP está sendo executado como um modulo, então, certifique-se de reiniciar seu servidor web depois de fazer alterações.

    Olhe também php_ini_loaded_file().

    Como eu adiciono meu diretório PHP no PATH do Windows?

    On Windows 7, XP, Vista, 2008, 2012 and up:

    • Vá até o Painel de Controle e abra o ícone de Sistema (Iniciar → Painel de Controle)

    • Vá até a aba avaçado

    • Clique no botão "Variáveis de Ambiente"

    • Olhe dentro do painel as 'Variavies do Sistema'

    • Encontre a entrada do Path (talvez você precise do scroll para encontrar)

    • Dê um duplo clique para entrar no Path

    • Encontre a entrada do Path (talvez você precise do scroll para encontrar) ;C:\php)

    • Aperte OK e reinicie seu computador

    No Windows 98/Me você precisa editar o arquivo autoexec.bat:

    • Abra o bloco de notas (Iniciar → Executar e digite notepad)

    • Abra o arquivo C:\autoexec.bat

    • Localize a linha com PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... e adicione: ;C:\php no final desta linha

    • Salve o arquivo e reinicie seu computador

    Nota: Certifique-se de reiniciar depois de seguir os passos acima para garantir que as alterações serão aplicadas PATH.

    O manual do PHP costumava indicar a cópia de arquivos para o diretório do sistema do Windows, porque o diretório (C:\Windows, C:\WINNT, etc.) está por padrão dentro do PATH do sistema. Copiando os arquivos para dentro do diretório do sistema do Windowsm pois há muito tempo está obsoleto e pode causar problemas.

    Como eu faço para o arquivo php.ini ficar disponível para o PHP no Windows?

    Existem várias maneiras de fazer isso. Se você usa o Apache, leia as instruções específicas de instalação ( Apache 1, Apache 2 ), caso contrário você deve definir a variável de ambiente PHPRC :

    No Windows NT, 2000, XP e 2003:

    • Vá em Painel de Controle e abra o icone Sistema (Iniciar → Configurações → Painel de Controle → Sistema, ou apenas Iniciar → Painel de Controle → Sistema para Windows XP/2003)

    • Vá na aba Avançado

    • Clique no botão "Variáveis de Ambiente"

    • Olhe dentro do painel 'Variaveis do Sistema'

    • Clique em 'Novo' e digite 'PHPRC' como nome da variavel e o diretório onde php.ini está localizado como o valor da variavel (e.g. C:\php)

    • Dê um OK e reinicie o computador

    No Windows 98/Me você precisa editar o arquivo autoexec.bat :

    • Abra no bloco de notas (Iniciar → Executar e digite notepad)

    • Abra o arquivo C:\autoexec.bat

    • Adicione uma nova linha no final no arquivo: set PHPRC=C:\php (substituir C:\php com o diretório onde php.ini esta localizado). Preste atenção pois o path não pode conter espaço. Por exemplo, Se você tem instalado o PHP no C:\Program Files\PHP, você entraria C:\PROGRA~1\PHP em vez disso.

    • Salve o arquivo e reinicie o computador

    É possivel usar o Apache negociação de conteúdo (opção MultiViews) com PHP?

    Se liga aos arquivos de inclusão de extensões do PHP, tudo funcionará perfeitamente. Este FAQ é apenas para o caso em que a conexão para arquivos PHP não incluem a extensão e você quiser usar negociação de conteúdo para escolher os arquivos PHP de URL com nenhuma extensão. Neste caso, substitua a linha AddType application/x-httpd-php .php com:

    AddHandler php5-script php
    AddType text/html php
    Esta solução não funciona para o Apache 1, pois o módulo PHP não captura php-script.

    PHP é limitado a processar apenas os métodos de requisições GET e POST?

    Não, é possível lidar com qualquer método de requisição, e.g. CONNECT. Status de respostas adequadas podem ser enviados com header(). Se somente métodos GET e POST precisam ser manipulados, isso pode ser conseguido com esta configuração do Apache:

    <LimitExcept GET POST>
    Deny from all
    </LimitExcept>