mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
489 lines
18 KiB
XML
Executable File
489 lines
18 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- EN-Revision: b8e1b1357def73f310c9f7405035b3acc0cb1eaf Maintainer: ae Status: ready --><!-- CREDITS: lucasnascimento,marcelsud,royopa,diegopires,ae -->
|
|
<chapter xml:id="faq.build" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Problemas de Compilação</title>
|
|
<titleabbrev>Problemas de Compilação</titleabbrev>
|
|
|
|
<para>
|
|
Esta seção reúne os erros mais comuns que ocorrem
|
|
na compilação.
|
|
</para>
|
|
|
|
<qandaset>
|
|
<qandaentry xml:id="faq.build.configure">
|
|
<question>
|
|
<para>
|
|
Eu peguei a última versão do PHP usando o serviço anônimo do GIT,
|
|
mas não há nenhum script de configuração!
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Você precisa ter o pacote GNU autoconf instalado para que possa
|
|
gerar o script configure a partir do <filename>configure.in</filename>. Basta executar
|
|
<command>./buildconf</command> no diretório raiz após a obtenção
|
|
do código fonte do servidor do GIT. (Além disso, a menos que você execute com <command>configure</command>
|
|
com a opção <literal>--enable-maintainer-mode</literal>, o
|
|
script configure não será automaticamente recompilado quando
|
|
o arquivo <filename>configure.in</filename> for atualizado, então você deve certificar-se de fazer isso
|
|
manualmente quando você perceber que o <filename>configure.in</filename> mudou. Um sintoma
|
|
disso é encontrar coisas como @VARIABLE@ em seu Makefile após
|
|
configure ou <filename>config.status</filename>tiver sido executado.)
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.configuring">
|
|
<question>
|
|
<para>
|
|
Estou tendo problemas para configurar o PHP para trabalhar com Apache.
|
|
Diz que não consegue encontrar <filename>httpd.h</filename>, mas está bem onde eu disse que está!
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Você precisa informar ao script configure/setup a localização do
|
|
diretório raíz do Apache. Isto significa que você precisa especificar
|
|
<option
|
|
role="configure">--with-apache=/caminho/para/apache</option>
|
|
e <emphasis>não</emphasis> <option
|
|
role="configure">--with-apache=/caminho/para/apache/src</option>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.lex">
|
|
<question>
|
|
<para>
|
|
Se enquanto estiver configurando o (<literal>./configure</literal>) do PHP, você se deparar com
|
|
um erro semelhante ao seguinte:
|
|
</para>
|
|
<para>
|
|
<screen>
|
|
checking lex output file root... ./configure: lex: command not found
|
|
configure: error: cannot find output from lex; giving up
|
|
</screen>
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Não deixe de ler as instruções de <link linkend="install.unix">instalação</link>
|
|
cuidadosamente e note que você precisa de ambos flex e bison
|
|
instalados para compilar o PHP. Dependendo da sua configuração você irá instalar
|
|
bison e flex a partir de uma fonte ou pacote, como um RPM.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.apache-sharedcore">
|
|
<question>
|
|
<para>
|
|
Quando tento iniciar o Apache, recebo a seguinte mensagem:
|
|
</para>
|
|
<para>
|
|
<screen>
|
|
fatal: relocation error: file /path/to/libphp4.so:
|
|
symbol ap_block_alarms: referenced symbol not found
|
|
</screen>
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Esse erro geralmente aparece quando um compila o core do Apache
|
|
como uma biblioteca DSO para uso compartilhado. Tente
|
|
reconfigurar o apache, certificando-se de usar pelo menos um dos
|
|
seguintes parâmetros:
|
|
</para>
|
|
<para>
|
|
<screen>
|
|
--enable-shared=max --enable-rule=SHARED_CORE
|
|
</screen>
|
|
</para>
|
|
<para>
|
|
Para obter mais informações, leia o arquivo <filename>INSTALL</filename>
|
|
que se encontra na pasta raíz do Apache ou a
|
|
<link xlink:href="&url.apachedso;">página sobre DSO</link> no manual do Apache.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.not-found">
|
|
<question>
|
|
<para>
|
|
Quando eu executo configure, ele diz que não pode encontrar os
|
|
arquivos de inclusão ou a biblioteca GD, gdbm, ou algum outro pacote!
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Você pode fazer o script 'configure' procurar por arquivos de cabeçalho e bibliotecas
|
|
em locais diferentes, especificando parâmetros adicionais para passar para
|
|
o pré-processador C e linker, tais como:
|
|
<programlisting>
|
|
<![CDATA[
|
|
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
|
|
]]>
|
|
</programlisting>
|
|
Se uma variante csh estiver sendo usada no seu shell de login (por quê?), o comando seria:
|
|
<programlisting>
|
|
<![CDATA[
|
|
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.yytname">
|
|
<question>
|
|
<para>
|
|
Quando se está compilando o arquivo <filename>language-parser.tab.c</filename>, ele me devolve um erro
|
|
que diz <literal>yytname undeclared</literal>.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Você precisa atualizar sua versão do Bison. Você pode encontrar a última versão
|
|
em <link xlink:href="&url.bison;">&url.bison;</link>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.link">
|
|
<question>
|
|
<para>
|
|
Quando eu executo <command>make</command>, parece rodar bem mas então falha quando tenta
|
|
ligar a aplicação final, queixando-se que não consegue encontrar alguns arquivos.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Algumas versões antigas do make que não colocam corretamente a versão
|
|
compilada dos arquivos nos diretórios das funções dentro do mesmo
|
|
diretório. Tente rodar <command>cp *.o functions</command> e então
|
|
execute novamente <command>make</command> para ver se isso ajuda. Se não ajudar, você realmente deve
|
|
atualizar para uma versão mais recente do GNU make.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.undefined">
|
|
<question>
|
|
<para>
|
|
Quando linkando o PHP, ele reclama de um número de referências indefinidas.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Confira a linha do link e tenha certeza que todas as bibliotecas
|
|
apropriadas estão sendo incluídas no final. É comum que talvez você tenha
|
|
esquecido os '-ldl' e qualquer biblioteca requerida para qualquer suporte de banco de dados
|
|
que você incluiu.
|
|
</para>
|
|
<para>
|
|
Algumas pessoas também reportaram que elas precisaram adicionar '-ldl' imediatamente
|
|
seguindo <filename>libphp4.a</filename> quando linkando com o Apache.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.not-running">
|
|
<question>
|
|
<para>
|
|
Eu segui todos os passos da instalação do módulo da versão do Apache no
|
|
Unix, e meus scripts PHP estão sendo mostrados no meu navegador ou me é solicitado
|
|
salvar os arquivos.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Isso significa que o módulo do PHP não está sendo chamado por alguma razão.
|
|
Três coisas para se verificar antes de pedir por mais ajuda:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Tenha certeza que o binário httpd que você está executando é o
|
|
que você acabou de compilar. Para fazer isso, tente executar:
|
|
<literal>/path/to/binary/httpd -l</literal>
|
|
</simpara>
|
|
<simpara>
|
|
Se você não vê <filename>mod_php4.c</filename> na lista, então
|
|
você não está executando o binário correto. Encontre e instale o
|
|
binário correto.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Certifique-se de ter adicionado o Mime Type correto em um dos seus
|
|
arquivos <literal>Apache .conf</literal>. Deveria ser:
|
|
<literal>AddType application/x-httpd-php .php</literal>
|
|
</simpara>
|
|
<simpara>
|
|
Também certifique-se que esta linha AddType não esteja escondida dentro de um
|
|
bloco <Virtualhost> ou <Directory> que possam
|
|
impedí-la de ser aplicada para a localização de seu script de teste.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Finalmente, a localização padrão dos arquivos de configuração do Apache
|
|
mudou entre o Apache 1.2 e Apache 1.3. Você deve verificar para ter certeza
|
|
que o arquivo de configuração que você está adicionando à linha do AddType
|
|
realmente está sendo lido. Você pode colocar um erro de sintaxe óbvio
|
|
em seu arquivo &httpd.conf; ou alguma outra mudança evidente que
|
|
diga se o arquivo está sendo lido corretamente.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.activate-module">
|
|
<question>
|
|
<para>
|
|
Lá diz para usar: <literal>--activate-module=src/modules/php4/libphp4.a</literal>,
|
|
mas esse arquivo não existe, então mudei para
|
|
<literal>--activate-module=src/modules/php4/libmodphp4.a</literal> e
|
|
não funciona!? O que está acontecendo?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Note que o arquivo <filename>libphp4.a</filename> não é para existir. O
|
|
processo apache irá criá-lo!
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.ansi">
|
|
<question>
|
|
<para>
|
|
Quando tento compilar o Apache com o PHP como um módulo estático usando
|
|
<literal>--activate-module=src/modules/php4/libphp4.a</literal>
|
|
ele me diz que o meu compilador não é compatível com ANSI.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Esta é uma mensagem de erro enganosa do Apache que foi corrigida
|
|
nas versões mais recentes.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.apxs">
|
|
<question>
|
|
<para>
|
|
Quando tento compilar o PHP usando <option
|
|
role="configure">--with-apxs</option> recebo mensagens de erro estranhas.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Há três coisas para verificar aqui. Em primeiro lugar, por alguma razão
|
|
o Apache quando compila o script Perl apxs, às vezes acaba
|
|
sendo compilado sem o compilador e os parâmetros corretos.
|
|
Procure pelo seu script apxs (tente o comando <command>which apxs</command>),
|
|
às vezes é encontrado em <filename>/usr/local/apache/bin/apxs</filename>
|
|
ou <filename>/usr/sbin/apxs</filename>.
|
|
Abra-o e verifique se existem linhas semelhantes a estas:
|
|
<programlisting>
|
|
<![CDATA[
|
|
my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
|
|
my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl
|
|
my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
|
|
]]>
|
|
</programlisting>
|
|
Se é isso que você vê, você encontrou o seu problema. Elas podem
|
|
conter apenas espaços ou outros valores incorretos, como 'q()'. Altere
|
|
estas linhas de modo que fiquem assim:
|
|
<programlisting>
|
|
<![CDATA[
|
|
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
|
|
my $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmpl
|
|
my $CFG_LDFLAGS_SHLIB = q(-shared); # substituted via Makefile.tmpl
|
|
]]>
|
|
</programlisting>
|
|
O segundo problema possível só deve ser um problema no Red Hat 6.1
|
|
e 6.2. O script apxs do Red Hat está quebrado. Procure por esta linha:
|
|
<programlisting>
|
|
<![CDATA[
|
|
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
|
|
]]>
|
|
</programlisting>
|
|
Se você vê a linha acima, mude para isto:
|
|
<programlisting>
|
|
<![CDATA[
|
|
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
|
|
]]>
|
|
</programlisting>
|
|
Finalmente, se você reconfigurar/reinstalar o Apache, adicione <command>make clean</command>
|
|
ao processo após o <command>./configure</command> e antes de <command>make</command>.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.microtime">
|
|
<question>
|
|
<para>
|
|
Durante <command>make</command>, eu recebo erros no microtime,
|
|
e um monte de <literal>RUSAGE_</literal>.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Enquanto é executada a porção <command>make</command> da instalação,
|
|
se você encontrar problemas que parecem semelhantes a estes:
|
|
<programlisting>
|
|
<![CDATA[
|
|
microtime.c: In function `php_if_getrusage':
|
|
microtime.c:94: storage size of `usg' isn't known
|
|
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
|
|
microtime.c:97: (Each undeclared identifier is reported only once
|
|
microtime.c:97: for each function it appears in.)
|
|
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
|
|
make[3]: *** [microtime.lo] Error 1
|
|
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
|
|
make[2]: *** [all-recursive] Error 1
|
|
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
|
|
make[1]: *** [all-recursive] Error 1
|
|
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
|
|
make: *** [all-recursive] Error 1
|
|
]]>
|
|
</programlisting>
|
|
</para>
|
|
<para>
|
|
Seu sistema está quebrado. É preciso corrigir os arquivos <filename>/usr/include</filename>
|
|
instalando o pacote glibc-devel que corresponde ao seu glibc. Isto não tem
|
|
absolutamente nada a ver com o PHP. Para provar isso a si mesmo, tente este
|
|
teste simples:
|
|
<programlisting>
|
|
<![CDATA[
|
|
$ cat >test.c <<X
|
|
#include <sys/resource.h>
|
|
X
|
|
$ gcc -E test.c >/dev/null
|
|
]]>
|
|
</programlisting>
|
|
Se isso mostrar erros, você saberá que os arquivos include estão bagunçados.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.mysql.tempnam">
|
|
<question>
|
|
<para>
|
|
Ao compilar o PHP com MySQL, o configure vai bem, mas durante o
|
|
<literal>make</literal> recebo um erro semelhante ao seguinte:
|
|
<emphasis>ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function
|
|
my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the
|
|
use of tempnam' is dangerous, better use mkstemp'</emphasis>,
|
|
o que está errado ?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Primeiramente, é importante perceber que este é um <literal>
|
|
Warning</literal> e não um erro fatal. Porque esta é
|
|
muitas vezes a última saída durante o <literal>make</literal>,
|
|
ela pode parecer um erro fatal, mas não é. Claro que, se
|
|
você definir o seu compilador para parar em warnings, ele vai parar. Além disso,
|
|
tenha sempre em mente que o suporte ao MySQL está habilitado por padrão.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
A partir do PHP 4.3.2, você também verá o seguinte texto depois
|
|
que a compilação (make) for concluída:
|
|
</para>
|
|
<para>
|
|
<screen>
|
|
Build complete.
|
|
(It is safe to ignore warnings about tempnam and tmpnam).
|
|
</screen>
|
|
</para>
|
|
</note>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.upgrade">
|
|
<question>
|
|
<para>
|
|
Eu quero atualizar o meu PHP. Onde posso encontrar a linha <command>./configure</command>
|
|
que foi usada para compilar a minha instalação atual do PHP?
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Ou você olha no arquivo config.nice, na pasta raíz atual da sua instalação do PHP,
|
|
ou, se este não estiver disponível, basta executar um script
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php phpinfo(); ?>
|
|
]]>
|
|
</programlisting>
|
|
No topo da saída a linha <command>./configure</command> que foi usada
|
|
para compilar esta instalação do PHP é mostrada.
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.build.gdlibs">
|
|
<question>
|
|
<para>
|
|
Quando compilo o PHP com a biblioteca GD retorna erros de compilação
|
|
ou segfaults na execução.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Certifique-se de que sua biblioteca GD e o PHP estejam ligadas às mesmas
|
|
bibliotecas dependentes (libpng por exemplo).
|
|
</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry xml:id="faq.installation.needgnu">
|
|
<question>
|
|
<para>
|
|
Ao compilar o PHP eu recebo erros aparentemente aleatórios, como se ele travasse.
|
|
Estou usando o Solaris, se isso importa.
|
|
</para>
|
|
</question>
|
|
<answer>
|
|
<para>
|
|
Usar utilitários que não são GNU ao compilar o PHP pode causar problemas.
|
|
Certifique-se de usar as ferramentas GNU, a fim de ter certeza de que a compilação do PHP
|
|
funcionará. Por exemplo, no Solaris, usando tanto o SunOS BSD-compatible
|
|
quanto versões do Solaris <literal>sed</literal> não vai funcionar, mas usando
|
|
as versões GNU ou Sun POSIX (XPG4) do <literal>sed</literal> irá funcionar.
|
|
Links: <link xlink:href="&url.sed;">GNU sed</link>,
|
|
<link xlink:href="&url.flex;">GNU flex</link>, e
|
|
<link xlink:href="&url.bison;">GNU bison</link>.
|
|
</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
|
|
-->
|