Instalação
Esta seção contem perguntas comuns na maneira de como instalar o PHP. PHP é aceito em vários Sistemas Operacionais (talvez exceto para MacOS antes OSX), e varios servidores Web. 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 um erro de simbolo indefinido (Undefined symbol): [mybox:user /src/php4] 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 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 quisermos usar a threaded MPM, deve-se olhar a configuração FastCGI onde o PHP está sendo executado em um espaço de memória próprio.
E finalmente, esta advertência contra a utilização de uma tarefa MPM não é tão forte para Sistemas Windows, porque a maioria das bibliotecas naquela plataforma tendem a ser uma tarefa.
- 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:
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-path=/etc
--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 está despejando memória. Devemos olhar 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 quando precisamos fornecer um backtrace com o relatório de erro para ajudar os 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 despejo de memória de núcleo, o gdb deverá informar sobre isso agora
-
type: bt
-
Deve-se incluir o seu backtrace no seu relatório. Você deveria enviar 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:
E adicione:# Módulos extra AddModule mod_php.c AddModule mod_php.c AddModule mod_perl.c # Módulos extra LoadModule php_module modules/mod_php.so LoadModule php5_module modules/libphp5.so # for PHP 5 LoadModule perl_module modules/libperl.so
... para as propriedades globais, ou para as propriedades do VirtualDomain você deseja ter suporte do PHP adicionado.AddType application/x-httpd-php .php
- 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 um erro de simbolo
indefinido (Undefined symbol):
[mybox:user /src/php4] 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 na saida de qualquer coisa. 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 esta 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 . Também, 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: Este 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?
-
No Windows NT+, 2000, XP e 2003::
Vá até o Painel de Controle e abra o ícone de Sistema (Iniciar -> Configurações -> Painel de Controle -> Sistema, ou apenas Iniciar -> Painel de Controle -> Sistema para Windows XP/2003+)
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
Note: Certifique-se de reiniciar depois de seguir os passos acima para garantir que as alterações serão aplicadas PATH.
O manual do PHP costuma promover 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:
Esta solução não funciona para o Apache 1, pois o módulo PHP não captura php-script.AddHandler php5-script php AddType text/html php
- 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>