Questa sezione raccoglie i più comuni errori che avvengono durante l'installazione.
1. Ho l'ultima versione di PHP ed uso l'anonymous CVS, ma non c'è nessuno script per la configurazione!
Per generare lo script di configurazione dal file configure.in devi avere il pacchetto autoconf di GNU installato sul tuo PC. Esegui /buildconf nella cartella di livello più alto dopo aver ricevuto i sorgenti dal server CVS. (A meno che tu non esegua la configurazione con l'opzione --enable-maintainer-mode, lo script di configurazione non ricostruirà automaticamente lo script quando il file configure.in è aggiornato, così dovresti essere sicuro di farlo manualmente quando ti accorgi che il file configure.in è cambiato. Un segno di ciò è trovare cose simili a @VARIABLE@ nel tuo Makefile dopo aver eseguito la configurazione o il config.status.)
2. Ho problemi nel configurare PHP per farlo lavorare con Apache. Un messaggio di errore mi dice che è impossibile trovare il file httpd.h, ma questo file è presente nel percorso che ho specificato!
Nello script di configurazione/setup devi specificare il percorso della cartella di livello più alto di Apache, cioè devi scrivere --with-apache=/percorso/per/apache e non --with-apache=/percorso/per/apache/src.
3. Quando eseguo la configurazione, un messaggio di errore mi dice che non è possibile trovare file inclusi o librerie per GD, gdbm o qualche altro pacchetto!
Puoi ordinare allo script di configurazione di cercare di gli header e le librerie anche in posizioni non standard specificando flag addizionali da passare al preprocessore C, come:
CPPFLAGS=.I/percorso/da/includere LDFLAGS=-L/percorso/per/la/libreria ./configure |
env CPPFLAGS=-I/percorso/da/includere LDFLAGS=-L/percorso/per/la/libreria ./configure |
4. Quando cerco di compilare il file language-parser.tab.c, un messaggio di errore mi dice yytname undeclared.
Devi aggiornare la tua versione di Bison. Puoi trovare l'ultima versione su ftp://ftp.gnu.org/pub/gnu/bison/.
5. Quando eseguo make sembra che vada tutto bene, ma lo script si blocca quando cerca di creare un collegamento all'applicazione finale, e un messaggio di errore mi dice che non è possibile trovare qualche file.
Qualche vecchia versione di make non posiziona le versioni compilate dei file nelle cartelle giuste. Prova ad eseguire cp *.o functions a quindi e rieseguire make e controlla se il messaggio di errore compare ancora. Se dovesse continuare ad apparire avrai bisogno di scaricare una versione più recente di make GNU.
6. Quando faccio dei collagamenti in PHP, un messaggio di errore mi avvisa di un numero indefinito di consultazioni.
Controlla la linea relativa al collegamento ed assicurati che tutte le librerie appropriate siano state incluse alla fine dello script. Le librerie più comuni che tu possa aver scordato sono le '-ldl' e quelle relative al supporto di qualche database che hai incluso.
Se stai facendo un collegamento con Apache 1.2.x, ti sei ricordato di aggiungere le informazioni appropriate nella linea EXTRA_LIBS del file di configurazione? Ti sei ricordato di rieseguire lo script di configurazione di Apache? Guarda il file INSTALL presente in questa distribuzione per avere maggiori informazioni.
Qualcuno che aveva dei problemi con i collegamenti con Apache ha risolto aggiungendo '-ldl' subito dopo libphp4.a.
Installare PHP insieme con Apache 1.3 è veramente semplice: segui queste istruzioni:
Scarica l'ultima distribuzione di Apache 1.3 da http://www.apache.org/dist/.
Estrai prima l'archivio gzip e poi quello tar dove preferisci, per esempio in /usr/local/src/apache-1.3.
Compila PHP per la prima volta eseguendo: ./configure --with-apache=/<percorso>/apache-1.3 Sostituisci <percorso> con il percorso che porta alla cartella di Apache 1.3
Scrivi make seguito da make install per installare PHP e copiare i file necessari alla distribuzione di Apache.
Cambia il percorso delle cartelle fino al tuo /<percorso>/apache-1.3/src e modifica il file di Configuration. Aggiungi al file la riga seguente: AddModule modules/php4/libphp4.a.
Scrivi: './Configure' seguito da 'make'.
Ora dovresti avere un httpd binario abilitato per PHP!
Nota bene: puoi anche usare il nuovo script ./configure di Apache. Leggi le istruzioni nel file README.configure presente nella tua distribuzione di Apache. Leggi anche il file INSTALL nella distribuzione di PHP.
8. Ho seguito le istruzioni per installare Apache come modulo sotto UNIX, ma il browser mi mostra il codice dei miei script PHP o mi viene chiesto di salvare la pagina PHP sul disco.
Questo significa che il modulo PHP non viene invocato correttamente per una qualche ragione. Prima di cercare ulteriore aiuto controlla tre cose:
Assicurati che l'httpd binario che stai eseguendo sia quello nuovo che hai appena installato. Per fare ciò prova ad eseguire: /percorso/per/il/file/binario/httpd -l
Se nell'elenco non compare mod_php4.c, significa che non stai eseguendo il binario giusto: trova ed installa il binario corretto.
Assicurati di aver aggiunto il corretto Myme Type ad uno dei tuoi file Apache .conf . Dovrebbe essere: AddType application/x-httpd-php3 .php3 (per PHP 3)
o AddType application/x-httpd-php .php (per PHP 4)
Assicurati anche che questa linea AddType non sia nascosta all'interno di un <Virtualhost> o di un blocco di <cartelle> che possa impedire l'applicazione al percorso dei tuoi script di prova.
Infine sappi che il percorso predefinito del file di configurazione di Apache 1.2 è diverso da quello di Apache 1.3. Dovresti controllare che il file della linea AddType sia al momento letto. Puoi inserire un errore di sintassi di proposito nel file httpd.conf o effettuare qualche altro cambiamento che ti farà capire se il file è correntemente letto.
9. Un messaggio di errore mi dice di usare: --activate-module=src/modules/php4/libphp4.a , ma questo file non esiste, quindi l'ho cambiato in --activate-module=src/ modules/php4/libmodphp4.a ma il tutto non funziona. Che succede?
Nota che si presume che il file libphp4.a non esista. Sarà un processo di Apache a crearlo!
10. Quando provo ad installare Apache con PHP come modulo statico usando --activate-module=src/ modules/php4/libphp4.a un messaggio di errore mi dice che il mio compilatore non è compatibile con ANSI.
Questo è un messaggio d'errore ingannevole di Apache, un bug che è stato riparato nelle versioni più recenti.
Per risolvere questo problema devi controllare tre cose. Per iniziare, per qualche ragione, quando Apache installa gli script Perl apxs, ogni tanto finisce senza il compilatore appropriato e le variabili flag. Trova il tuo script apxs (prova il comando 'which apxs', ogni tanto lo trova in /usr/local/apache/bin/apxs o in /usr/sbin/apxs): aprilo e cerca delle linee simili a queste:
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 |
Se durante la parte di installazione che riguarda make hai incontrato problemi simili a questi, significa che il tuo sistema ha qualche problema:
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 |
Hai bisogno di fissare alcuni tuoi file in /usr/include installando un pacchetto glibc-devel che corrisponda al tuo glibc. Questo non ha assolutamente niente a che fare con PHP. Per controllare se il tuo problema dipende da questo, prova questo semplice test:
$ cat >test.c <<X #include <sys/resource.h> X $ gcc -E test.c >/dev/null |
13. Voglio aggiornare il mio PHP. Dove posso trovare la linea di ./configure che è stata usata per costruire la mia corrente versione di PHP?
Puoi cercare nel file config.nice nel sorgente della tua attuale installazione di PHP o eseguire questo semplice script: