FAQ
PHP Manual

Desenvolvendo Problemas

Esta seção reúne os erros mais comuns que ocorrem na tempo de compilação.

  1. Eu peguei a última versão do PHP usando o serviço do SVN anónimo, mas não há nenhum script de configuração!
  2. Estou tendo problemas para configurar o PHP para trabalhar com Apache. Diz que não consegue encontrar httpd.h,mas é certo onde eu disse que é!
  3. Ao configurar o PHP (./configure), você se deparar com um erro semelhante ao seguinte: checar a próxima saída de arquivo root... ./configure: lex: command not found configure: error: não consegue encontrar a saída de Lex; desistir
  4. Quando tento iniciar o Apache, recebo a seguinte mensagem: deslocalização de erro fatal: file / path/to/libphp4.so: ap_block_alarms símbolo: O símbolo de referência não encontrada
  5. Quando eu executar o configure, ele diz que não pode encontrar o incluir arquivos ou a biblioteca de GD, gdbm, ou algum outro pacote!
  6. Quando se está compilando os arquivos language-parser.tab.c, me devolve um erro que diz yytname undeclared.
  7. Quando eu executo make, parace rodar bem mas então falha quando tenta linkar a applicação final, queixando-se que não consegue encontrar alguns arquivos.
  8. Quando linkando o PHP, ele reclama de um número de referências indefinidas.
  9. Eu não posso entender como construir PHP com Apache 1.3.
  10. Eu segui todos os passos da istalação do modulo da versão do Apache no Unix, e meus scripts PHP são mostrados no meu navegador ou sou interrogado para salvar os arquivos.
  11. la diz para usar: - activate-module = src/modules/php4/libphp4.a , mas esse arquivo não existe, então mudei para - activate-module = src/modules/php4/libmodphp4.a e não funciona!? O que está acontecendo?
  12. Quando tento compilar o Apache com o PHP como um módulo estático usando - activate-module = src/modules/php4/libphp4.a ele diz-me que o meu compilador não é compatível com ANSI.
  13. Quando tento compilar o PHP usando --with-apxs Recebo mensagens de erro estranha.
  14. Durante make , eu recebo erros no microtime, e um monte de RUSAGE_ material.
  15. Ao compilar o PHP com MySQL, configurar corre bem, mas durante fazer I get um erro semelhante ao seguinte: ext / mysql / libmysql / my_tempnam.o (texto. +0 x46):Em função my_tempnam ': / php4/ext/mysql/libmysql/my_tempnam.c: 103: o mkstemp utilizando de tempnam 'é perigoso, melhor' , O que está errado ?
  16. Eu quero atualizar o meu PHP. Onde posso encontrar o . / Configure linha que foi usada para construir a minha instalação atual do PHP?
  17. Quando compilar o PHP com a biblioteca GD é estranho ou dá erros de compilação segfaults ou em execução.
  18. Ao compilar o PHP eu recebo erros aparentemente aleatória, como ele reage. Estou usando o Solaris se o que importa.
Eu peguei a última versão do PHP usando o serviço do SVN anónimo, mas não há nenhum script de configuração!

Você tem que ter o pacote GNU autoconf instalado para que você possa gerar o script de configuração de configure.in.Basta executar ./buildconfno diretório de nível mais alto após a obtenção as fontes do servidor SVN. (Além disso, a menos que você executar configure com o --enable-maintainer-mode opção, o script de configuração não irá começar automaticamente reconstruída quando o configure.inarquivo é atualizado, então você deve certificar-se de fazer isso manualmente quando você percebe configure.inmudou. Um sintoma do presente é encontrar coisas como variável @ @ em seu Makefile após configurar ou config.status quando é executado.)

Estou tendo problemas para configurar o PHP para trabalhar com Apache. Diz que não consegue encontrar httpd.h,mas é certo onde eu disse que é!

Você precisa dizer ao configure / script de configuração da localização do alto nível de sua árvore fonte do Apache. Isto significa que pretende especificar --with-apache=/path/to/apache and not --with-apache=/path/to/apache/src .

Ao configurar o PHP (./configure), você se deparar com um erro semelhante ao seguinte:

checar a próxima saída de arquivo root... ./configure: lex: command not found
configure: error: não consegue encontrar a saída de Lex; desistir

Não deixe de ler a instalação instruções cuidadosamente e note que você precisa de ambos flex e bison instalado para compilar o PHP. Dependendo da configuração que irá instalar bison e flex a partir de qualquer fonte ou um pacote, como um RPM.

Quando tento iniciar o Apache, recebo a seguinte mensagem:

deslocalização de erro fatal: file / path/to/libphp4.so:
ap_block_alarms símbolo: O símbolo de referência não encontrada

Esse erro geralmente aparece quando um compila o Apache programa nuclear como uma biblioteca DSO para uso compartilhado. Tente apache reconfigurar, tornando-se usar pelo menos seguintes bandeiras:


--enable-shared=max --enable-rule=SHARED_CORE

Para obter mais informações, leia o nível superior Apache INSTALL ou o Apache » página DSO manual.

Quando eu executar o configure, ele diz que não pode encontrar o incluir arquivos ou a biblioteca de GD, gdbm, ou algum outro pacote!

Você pode fazer o script de configuração procura por arquivos de cabeçalho e bibliotecas em locais não-padrão, especificando parâmetros adicionais para passar para o pré-processador C e linker, tais como:

    CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
If you're using a csh-variant for your login shell (why?), it would be:
    env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

Quando se está compilando os arquivos language-parser.tab.c, me devolve um erro que diz yytname undeclared.

Você precisa atualizar sua versão do Bison. Você pode encontrar a última versão em » http://www.gnu.org/software/bison/bison.html.

Quando linkando o PHP, ele reclama de um número de referências indefinidas.

De uma olhada na linha do link e tenha certeza que todas as bibliotecas apropriadas estão sendo incluidas no final. É comum que talvez você tenha esquecidos os '-ldl' e qualquer biblioteca requerida para qualquer suporte de banco de dados que você incluiu.

Se você estiver ligado ao Apache 1.2.x, você se lembrou de adicionar a informação apropriada para a linha EXTRA_LIBS do arquivo de configuração e reiniciou o script de configuração do Apache? Veja o Capítulo de instalação para mais informações.

Algumas pessoas também tem reportado que elas tem que adicionar '-ldl' imediatamente seguido de libphp4.a quando ligado com o Apache.

Eu não posso entender como construir PHP com Apache 1.3.

Isso é na verdade muito fácil. Siga esses passos cuidadosamente:

  • Obtenha a distribuição da última versão do Apache 1.3 no link » http://httpd.apache.org/download.cgi.
  • Ungzip e descompacte em algum lugar, por exemplo /usr/local/src/apache-1.3.
  • Compile o PHP rodando primeiramente ./configure --with-apache=/<path>/apache-1.3 (substitua <path> pelo caminho atual do seu diretório apache-1.3.
  • Digite make seguido por make install para desenvolver o PHP e copiar os arquivos necessários para a árvore de distribuição do Apache.
  • Troque os diretórios dentro do seu diretório /<path>/apache-1.3/src e edite o arquivo Configuration. Adicione ao arquivo: AddModule modules/php4/libphp4.a.
  • Digite: ./configure seguido de make.
  • Você deve ter agora um binário com PHP ativado!

Nota: Você pode também usar o novo script Apache ./configure. Veja as instruções no arquivo README.configure o qual faz parte da sua distribuição Apache. Veja também no arquivo INSTALL na distrubuição PHP.

Eu segui todos os passos da istalação do modulo da versão do Apache no Unix, e meus scripts PHP são mostrados no meu navegador ou sou interrogado para salvar os arquivos.

Isso significa que o modulo do PHP não esta sendo chamaado por alguma razão. Três coisas para se checar antes de pedir por mais ajuda:

  • Tenha certeza que o binário httpd que você esta executndo é o que você acabou de construir. Para fazer isso, tente executar: /caminho/para/binário/httpd -l Se você não vê mod_php4.c constantes, então você não estiver executando o binário do direito. Encontrar e instalar o binário correto.
  • Certifique-se de ter adicionado o correto Mime Type em um dos seus arquivos .conf do Apache. Deve-se: AddType application / x-httpd-php. php Também certifique-se que esta linha AddType não está escondido dentro de uma bloco <Virtualhost> ou <Directory> que impedi-lo de aplicação para a localização de seu script de teste.
  • 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 a certifique-se que o arquivo de configuração que você está adicionando o AddType linha para que realmente está sendo lido. Você pode colocar um óbvio erro de sintaxe em seu arquivo httpd.conf ou alguma outra mudança evidente que dizer se o arquivo estiver sendo lido corretamente.

la diz para usar: - activate-module = src/modules/php4/libphp4.a , mas esse arquivo não existe, então mudei para - activate-module = src/modules/php4/libmodphp4.a e não funciona!? O que está acontecendo?

Note que o libphp4.a não é suposto existir. O processo apache irá criá-lo!

Quando tento compilar o Apache com o PHP como um módulo estático usando - activate-module = src/modules/php4/libphp4.a ele diz-me que o meu compilador não é compatível com ANSI.

Esta é uma mensagem de erro enganosas da Apache que foi corrigido nas versões mais recentes.

Quando tento compilar o PHP usando --with-apxs Recebo mensagens de erro estranha.

Há três coisas para buscar aqui. Em primeiro lugar, por alguma razão Apache quando constrói o script Perl apxs, às vezes acaba ficando de fora o compilador adequado e variáveis bandeiras. Encontre o seu script apxs (tente o comando que apxs ), às vezes é encontrado em / usr / local / apache / bin / apxs ou / usr / sbin / apxs . Abri-lo e verificar se há linhas semelhantes a estas:

my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl
Se é isso que você vê, você encontrou o seu problema. Podem contenham apenas espaços ou outros valores incorretos, como 'q ()'. Alterar estas linhas para dizer:
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 
O segundo problema possível só deve ser um problema no Red Hat 6.1 e 6.2. O script apxs navios Red Hat está quebrado. Procure por esta linha:
my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install
Se você vê a linha acima, mude para isto:
my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install
Finalmente, se você reconfigurar / Apache reinstalar, adicionar um make clean para o processo depois . / configure e antes make .

Durante make , eu recebo erros no microtime, e um monte de RUSAGE_ material.

Durante o make parcela da instalação, Se você encontrar problemas que parecem semelhantes a este:

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

Seu sistema está falido. É preciso corrigir o seu /usr/include por instalação de um pacote glibc-devel glibc que corresponde ao seu. Isto tem absolutamente nada a ver com o PHP. Para provar isso a si mesmo, tente este teste simples:

$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
Se isso mostrar os erros, você conhece o seu arquivos de inclusão são desarrumados.

Ao compilar o PHP com MySQL, configurar corre bem, mas durante fazer I get um erro semelhante ao seguinte: ext / mysql / libmysql / my_tempnam.o (texto. +0 x46):Em função my_tempnam ': / php4/ext/mysql/libmysql/my_tempnam.c: 103: o mkstemp utilizando de tempnam 'é perigoso, melhor' , O que está errado ?

Primeiramente, é importante perceber que este é um Warning e não um erro fatal. Porque este é muitas vezes a saída vista pela última vez durante fazer , Ela pode parecer um erro fatal, mas não é. Claro que, se você define o seu compilador para morrer na avisos, ele vai. Além disso ter em mente que suportam o MySQL é ativado por padrão.

Nota:

A partir do PHP 4.3.2, você também verá o seguinte texto depois a compilação (make) conclui:


Construção completa.
(É seguro ignorar avisos sobre tempnam e tmpnam).

Eu quero atualizar o meu PHP. Onde posso encontrar o . / Configure linha que foi usada para construir a minha instalação atual do PHP?

Ou você olhar para arquivo config.nice, na árvore fonte do seu atual do PHP instalação ou, se este não estiver disponível, basta executar um

<?php phpinfo(); ?>
script. Em cima da saída do ./configure line, que foi usado para construir esta instalação do PHP é mostrado.

Quando compilar o PHP com a biblioteca GD é estranho ou dá erros de compilação segfaults ou em execução.

Certifique-se de sua biblioteca GD e PHP estão ligadas contra a mesma função bibliotecas (libpng por exemplo).

Ao compilar o PHP eu recebo erros aparentemente aleatória, como ele reage. Estou usando o Solaris se o que importa.

Usando o não-utilitários GNU ao compilar o PHP pode causar problemas. Ser Certifique-se de usar as ferramentas GNU, a fim de ter certeza de que irá compilar PHP trabalho. Por exemplo, no Solaris, usando o SunOS BSD-compatible ou versões do Solaris sed não vai funcionar, mas usando GNU ou Sun POSIX (XPG4) versões do sed will trabalho. Links: »  GNU sed , »  GNU flex e »  bison .


FAQ
PHP Manual