Esta seção reúne os erros mais comuns que ocorrem na tempo de compilaçã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.)
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 .
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.
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
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
Você precisa atualizar sua versão do Bison. Você pode encontrar a última versão em » http://www.gnu.org/software/bison/bison.html.
Algumas versões antigas de make que não colocam corretmente a versão compilada dos arquivos nos diretórios das funções dentro do mesmo diretório. Tente rodar cp *.o functions e então execute novamente make para ver se isso ajuda. Se não ajudar, você realmente deve atualizar para uma versão mais recente de GNU make.
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.
Isso é na verdade muito fácil. Siga esses passos cuidadosamente:
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.
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:
Note que o libphp4.a não é suposto existir. O processo apache irá criá-lo!
Esta é uma mensagem de erro enganosas da Apache que foi corrigido nas versões mais recentes.
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
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
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
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
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).
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(); ?>
Certifique-se de sua biblioteca GD e PHP estão ligadas contra a mesma função bibliotecas (libpng por exemplo).
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 .