mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
574 lines
20 KiB
XML
Executable File
574 lines
20 KiB
XML
Executable File
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 2dbf3d9064d4cb07f0a2f7d06641c877a2e5ed24 Maintainer: ae Status: ready --><!-- CREDITS: rodrigo nascimento,jeansegat,ae,adiel,leonardolara -->
|
|
<chapter xml:id="faq.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Instalação</title>
|
|
<titleabbrev>Instalação</titleabbrev>
|
|
|
|
<para>
|
|
Esta seção contém perguntas comuns sobre a maneira de instalar
|
|
o PHP. O PHP está disponível para quase todos os sistemas operacionais, e praticamente qualquer servidor web.
|
|
</para>
|
|
<para>
|
|
Para instalar o PHP, siga as instruções em <xref linkend="install"/>.
|
|
</para>
|
|
|
|
<qandaset>
|
|
<qandaentry xml:id="faq.installation.apache2">
|
|
<question>
|
|
<para>
|
|
Por que não devemos usar o Apache2 com um módulo MPM com threads em um ambiente de produção?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
O PHP é como uma cola. É a cola usada para construir aplicações web legais
|
|
unindo dezenas de bibliotecas de terceiros e fazendo tudo parecer como
|
|
uma entidade coerente através de uma interface de linguagem intuitiva e fácil de
|
|
aprender. A flexibilidade e poder do PHP dependem da estabilidade e
|
|
robustez da plataforma subjacente. Ele precisa de um sistema operacional funcionando, um
|
|
servidor web funcionando e bibliotecas de terceiros funcionando para juntar. Quando qualquer
|
|
um desses elementos para de funcionar o PHP precisa de meios de identificar e remediar os problemas
|
|
rapidamente. Quando tornamos a arquitetura subjacente mais complexa por não ter
|
|
threads de execução completamente separadas, segmentos de memória completamente
|
|
separados e uma sandbox sólida onde cada requisição é executada, mais
|
|
problemas são introduzidos ao sistema do PHP.
|
|
</para>
|
|
<para>
|
|
Se quiser utilizar um módulo MPM com threads, veja uma configuração FastCGI
|
|
onde o PHP seja executado em seu próprio espaço de memória.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.phpini">
|
|
<question>
|
|
<para>
|
|
Unix/Windows: Onde deveria estar localizado meu arquivo
|
|
&php.ini;?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Por padrão no Unix ele deve estar em <filename>/usr/local/lib</filename>
|
|
que é o <filename><install-path>/lib</filename>.
|
|
A maioria das pessoas vai querer mudar isso em tempo de compilação com a flag
|
|
<link linkend="configure.with-config-file-path">--with-config-file-path</link>.
|
|
Poderíamos, por exemplo, configurá-la com algo como:
|
|
<programlisting role="shell">
|
|
--with-config-file-path=/etc
|
|
</programlisting>
|
|
E então poderíamos copiar <filename>php.ini-development</filename> do
|
|
local de origem da instalação para <filename>/etc/php.ini</filename> e
|
|
editá-lo para fazer quaisquer alterações locais que desejássemos.
|
|
</para>
|
|
<programlisting role="shell">
|
|
--with-config-file-scan-dir=PATH
|
|
</programlisting>
|
|
<para>
|
|
No Windows, o caminho padrão para o arquivo &php.ini; é o diretório
|
|
Windows. Se estivermos usando o servidor web Apache, o &php.ini; primeiro é
|
|
procurado no diretório de instalação do Apache, por exemplo, <filename>c:\program
|
|
files\apache group\apache</filename>. Desta maneira, poderíamos ter
|
|
diferentes arquivos &php.ini; para diferentes versões do Apache na mesma
|
|
máquina.
|
|
</para>
|
|
<para>
|
|
Veja também o capítulo sobre o <link
|
|
linkend="configuration.file">arquivo de configuração</link>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.nodata">
|
|
<question>
|
|
<para>
|
|
Unix: Eu instalei o PHP, mas toda vez que carrego um documento, recebo a
|
|
mensagem 'Document Contains No Data'! O que está acontecendo?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Isso provavelmente significa que o PHP está tendo algum tipo de problema
|
|
e está 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 então tente reproduzir o problema com
|
|
um pequeno caso de teste. Se você souber como usar 'gdb', é muito
|
|
útil quando você pode fornecer um backtrace com seu relatório de erros
|
|
para ajudar os desenvolvedores a identificar o problema. Se estiver usando
|
|
o PHP como um módulo do Apache tente algo como:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Pare seus processos httpd
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
gdb httpd
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Pare seus processos httpd
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
> execute -X -f /caminho/para/httpd.conf
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Então acesse o URL que está causando problemas com seu browser.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
> execute -X -f /caminho/para/httpd.conf
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Se estiver ocorrendo um core dump, o gdb deverá informar sobre isso agora
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
type: bt
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Você deve incluir o backtrace no seu relatório de erros. Envie o relatório para
|
|
<link xlink:href="&url.php.bugs;">&url.php.bugs;</link>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>
|
|
Se o seu script usa as funções de expressões regulares
|
|
(<function>preg_match</function> e demais), você deve ter certeza
|
|
de que compilou o PHP e o Apache com a mesma versão do pacote de expressões
|
|
regulares. Isso deve acontecer automaticamente com o
|
|
PHP e Apache 1.3.x.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.processing">
|
|
<question>
|
|
<para>
|
|
Unix: Eu instalei o PHP usando RPMS, mas o Apache não está processando as
|
|
páginas PHP! O que está acontecendo aqui?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Supondo que você instalou tanto o Apache quanto o PHP a partir dos pacotes RPM,
|
|
você precisa descomentar ou adicionar algumas ou
|
|
todas as linhas a seguir ao seu arquivo &httpd.conf;:
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
# 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
|
|
]]>
|
|
</programlisting>
|
|
E adicionar:
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
AddType application/x-httpd-php .php
|
|
]]>
|
|
</programlisting>
|
|
... às propriedades globais, ou às propriedades do
|
|
VirtualDomain ao qual você deseja adicionar o suporte ao PHP.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.frontpage">
|
|
<question>
|
|
<para>
|
|
Unix: Eu corrigi o Apache com o patch das extensões FrontPage, e
|
|
repentinamente o PHP parou de funcionar. O PHP é incompatível com as
|
|
extensões FrontPage do Apache?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Não, O PHP funciona bem com as extensões FrontPage. O problema
|
|
é que o patch do FrontPage modifica diversas estruturas do Apache,
|
|
das quais o PHP depende. Recompilar o PHP (usando 'make clean ; make')
|
|
depois de aplicar o patch FP deve resolver o problema.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.blankscreen">
|
|
<question>
|
|
<para>
|
|
Unix/Windows: Eu tenho o PHP instalado, mas quando tento
|
|
acessar um arquivo de script PHP através do meu browser, recebo uma tela em branco.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Faça um 'view source' no navegador web e provavelmente
|
|
descobrirá que pode ver o código fonte do seu script 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 configurações de seu servidor, com base nas instruções de
|
|
instalação do PHP.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.500error">
|
|
<question>
|
|
<para>
|
|
Unix/Windows: Eu instalei o PHP, mas quando tento
|
|
acessar um arquivo de script PHP através do meu browser,
|
|
recebo um erro 500 do servidor.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Alguma coisa deu errado quando o servidor tentou executar o PHP. Para
|
|
conseguir ver uma mensagem de erro razoável, na linha de comando,
|
|
mude para o diretório que contém o executável do PHP
|
|
(<filename>php.exe</filename> no Windows) e execute
|
|
<command>php -i</command>. Se o PHP tiver algum problema para rodar,
|
|
então uma mensagem de erro apropriada 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
|
|
<function>phpinfo</function>) então o PHP está funcionando,
|
|
e seu problema pode ser relacionado à configuração do seu
|
|
servidor, que você deve verificar novamente.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.undefinedsyms">
|
|
<question>
|
|
<para>
|
|
Alguns sistemas operacionais: Eu instalei o PHP sem erros,
|
|
mas quando eu tento iniciar o Apache recebo erros de undefined symbol:
|
|
<programlisting role="shell">
|
|
[mybox:user /src/php5] root# apachectl configtest
|
|
apachectl: /usr/local/apache/bin/httpd Undefined symbols:
|
|
_compress
|
|
_uncompress
|
|
</programlisting>
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Isto não tem nada a ver com o PHP, mas com as bibliotecas do
|
|
cliente MySQL. Algumas necessitam de <option role="configure">
|
|
--with-zlib</option>, outras não. Isso
|
|
também é abordado nas FAQ do MySQL.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.cgierror">
|
|
<question>
|
|
<para>
|
|
Windows: Eu instalei o PHP, mas quando tento acessar
|
|
um arquivo de script PHP através do meu navegador, eu recebo o erro:
|
|
<screen>
|
|
<![CDATA[
|
|
cgi error:
|
|
The specified CGI application misbehaved by not
|
|
returning a complete set of HTTP headers.
|
|
The headers it did return are:
|
|
]]>
|
|
</screen>
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Esta mensagem de erro significa que o PHP falhou em gerar
|
|
qualquer saída. Para começar a ver uma mensagem de erro razoável,
|
|
na linha de comando, mude para o diretório que contém o
|
|
executável PHP (<filename>php.exe</filename> no Windows) e execute
|
|
<command>php -i</command>. Se o PHP estiver com algum problema para rodar,
|
|
então uma mensagem de erro adequada será exibida, o que
|
|
lhe dará uma ideia do que precisa ser feito em seguida. Se você
|
|
receber uma tela cheia de códigos HTML (a saída da função
|
|
<function>phpinfo</function>) então o PHP está funcionando.
|
|
</para>
|
|
<para>
|
|
Uma vez que o PHP esteja funcionando na linha do comando, tente acessar o
|
|
script via navegador novamente. Se ele ainda falhar, então
|
|
pode ser um dos seguintes:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
As permissões de arquivo no seu script PHP,
|
|
<filename>php.exe</filename>, <filename>php5ts.dll</filename>,
|
|
&php.ini; ou qualquer extensão do PHP que você está tentando carregar são tais
|
|
que o usuário anônimo
|
|
<literal>ISUR_<machinename></literal> não pode acessá-los.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
O arquivo de script não existe (ou provavelmente não está onde você
|
|
acha que ele está em relação ao seu diretório root web). Note que
|
|
com o IIS você pode interceptar o erro marcando a opção 'verificar se o arquivo
|
|
existe' quando configurar os mapeamentos de script no
|
|
Gerenciador de Serviços de Internet. Se um arquivo de script não existe
|
|
então o servidor web irá retornar um erro 404. Há
|
|
também o benefício adicional que o IIS fará qualquer
|
|
autenticação exigida para você com base nas permissões
|
|
NTLanMan no seu arquivo de script.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.phpandiis">
|
|
<question>
|
|
<para>
|
|
Windows: Eu segui todas as instruções, mas ainda não consegui
|
|
fazer o PHP e o IIS trabalharem juntos!
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Certifique-se de que qualquer usuário que precise executar um script PHP tem
|
|
permissão para executar o <filename>php.exe</filename>! O IIS usa um usuário anônimo
|
|
que é adicionado no momento que o IIS é instalado. Este usuário precisa
|
|
de permissões para o <filename>php.exe</filename>. Além disso, qualquer usuário
|
|
autenticado também precisará ter permissão para executar o <filename>php.exe</filename>.
|
|
E para o IIS4 você precisa dizer que o PHP é um engine de script.
|
|
Além disso, você também vai querer ler
|
|
<link linkend="faq.installation.forceredirect">esta FAQ</link>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.forceredirect">
|
|
<question>
|
|
<para>
|
|
Quando executo o PHP como CGI com o IIS, PWS, OmniHTTPD ou Xitami,
|
|
recebo o seguinte erro: <literal>Security Alert! PHP CGI
|
|
cannot be accessed directly.</literal>.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Você deve definir a diretiva <link linkend="ini.cgi.force-redirect">
|
|
cgi.force_redirect</link> para <literal>0</literal>.
|
|
O padrão é <literal>1</literal>, então certifique-se que
|
|
a diretiva não está comentada (com um <literal>;</literal>). Como
|
|
todas as diretivas, esta é definida no &php.ini;
|
|
</para>
|
|
<para>
|
|
Pelo fato do padrão ser <literal>1</literal>, é fundamental
|
|
que você tenha certeza de que o arquivo &php.ini; correto está sendo
|
|
lido. Leia <link linkend="faq.installation.findphpini">
|
|
esta FAQ</link> para detalhes.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.findphpini">
|
|
<question>
|
|
<para>
|
|
Como eu sei se meu &php.ini; está sendo encontrado e lido?
|
|
Parece que ele não está, já que as minhas alterações não estão sendo efetuadas.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Para ter certeza de que seu &php.ini; está sendo lido pelo PHP, faça uma chamada
|
|
à função <function>phpinfo</function>. Próximo ao topo, haverá uma
|
|
lista chamada <literal>Configuration File (php.ini)</literal>.
|
|
Esta irá lhe dizer onde o PHP está procurando o &php.ini; e
|
|
se ele está sendo lido ou não. Se houver apenas um diretório do <envar>PATH</envar>,
|
|
então ele não está sendo lido e você deve colocar seu &php.ini;
|
|
neste diretório. Se o &php.ini; está incluso dentro do <envar>PATH</envar>,
|
|
ele está sendo lido.
|
|
</para>
|
|
<para>
|
|
Se o &php.ini; está sendo lido e seu PHP está sendo executado como um módulo,
|
|
então certifique-se de reiniciar seu servidor web depois de fazer alterações no
|
|
&php.ini;.
|
|
</para>
|
|
<para>
|
|
Veja também <function>php_ini_loaded_file</function>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.addtopath">
|
|
<question>
|
|
<para>
|
|
Como eu adiciono meu diretório PHP ao <envar>PATH</envar>
|
|
do Windows?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
No Windows:
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
Vá até o Painel de Controle e abra o ícone de Sistema (Iniciar → Painel de Controle)
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Vá até a aba Avançado
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Clique no botão 'Variáveis de Ambiente'
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Procure o painel 'Variáveis do Sistema'
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Encontre o item Path (talvez você precise rolar a lista para encontrá-lo)
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Dê um duplo clique no item Path
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Adicione seu diretório do PHP ao final, incluindo ';' antes (por exemplo,
|
|
<literal>;C:\php</literal>)
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Aperte OK e reinicie seu computador
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<note>
|
|
<simpara>
|
|
Certifique-se de reiniciar depois de seguir os passos acima para garantir que as
|
|
alterações ao <envar>PATH</envar> sejam aplicadas.
|
|
</simpara>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.phprc">
|
|
<question>
|
|
<para>
|
|
Como eu torno o arquivo &php.ini; disponível para o PHP no Windows?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Existem várias maneiras de fazer isso. Se você estiver usando o Apache,
|
|
consulte a documentação do Apache, caso contrário,
|
|
você deve definir a variável de ambiente <varname>PHPRC</varname>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.windows-temporary-path">
|
|
<question>
|
|
<simpara>
|
|
Windows: Como verificar se o PHP pode escrever no diretório temporário
|
|
com o IIS?
|
|
</simpara>
|
|
</question>
|
|
<answer>
|
|
<procedure>
|
|
<step>
|
|
<simpara>
|
|
Clique com o botão direito no diretório temporário (<varname>%TEMP%</varname>)
|
|
no Explorador de Arquivos para obter as permissões.
|
|
O diretório temporário está disponível na configuração ou através da função
|
|
<function>phpinfo</function>.
|
|
</simpara>
|
|
</step>
|
|
<step>
|
|
<simpara>
|
|
Para o IIS, verifique que o usuário <literal>IIS_User</literal> tem
|
|
permissão de <literal>MODIFY</literal> (alteração).
|
|
</simpara>
|
|
</step>
|
|
</procedure>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.apache.multiviews">
|
|
<question>
|
|
<para>
|
|
É possível usar a negociação de conteúdo do Apache (opção MultiViews)
|
|
com o PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Se os links para arquivos PHP incluem extensões, tudo funcionará perfeitamente. Esta
|
|
FAQ é apenas para o caso em que links para arquivos PHP não incluem a extensão
|
|
e você quer usar a negociação de conteúdo para selecionar arquivos PHP a partir de URLs
|
|
sem nenhuma extensão.
|
|
Neste caso, substitua a linha <literal>AddType application/x-httpd-php
|
|
.php</literal> por:
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
AddHandler php5-script php
|
|
AddType text/html php
|
|
]]>
|
|
</programlisting>
|
|
Esta solução não funciona para o Apache 1, pois o módulo PHP não captura
|
|
<literal>php-script</literal>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.requestmethods">
|
|
<question>
|
|
<para>
|
|
O PHP é limitado a processar apenas os métodos de requisições GET e POST?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Não, é possível lidar com qualquer método de requisição, por exemplo, CONNECT. Status
|
|
de respostas adequados podem ser enviados com <function>header</function>.
|
|
Se somente os métodos GET e POST devem ser manipulados, isso pode ser
|
|
alcançado com esta configuração do Apache:
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
<LimitExcept GET POST>
|
|
Deny from all
|
|
</LimitExcept>
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
</qandaset>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|