Se Apache non funziona in modo corretto, ma non si ha idea di come individuare la causa del problema, il primo indizio potrebbe trovarsi nei file di log.
Nel sistema si troverà un certo numero di log, tutti collocati in
67.185.0.236 - - [18/Jun/2005:12:05:50 -0700] "GET / HTTP/1.0" 200 721 10.0.1.80 - - [18/Jun/2005:12:11:07 -0700] "GET /~jaspenelle/__journal1.jpg HTTP/1.1" 200 19079 66.239.233.163 - - [18/Jun/2005:12:15:06 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.0" 200 1661 67.185.60.155 - - [18/Jun/2005:12:18:48 -0700] "GET / HTTP/1.0" 200 721 67.185.0.236 - - [18/Jun/2005:12:25:39 -0700] "GET / HTTP/1.0" 200 721 10.0.1.80 - - [18/Jun/2005:12:28:04 -0700] "GET /~jaspenelle/avy14.gif HTTP/1.1" 200 1661 10.0.1.80 - - [18/Jun/2005:12:28:46 -0700] "GET /~jaspenelle/avy7.png HTTP/1.1" 200 13066
Questo file è un semplice elenco di tutti i file richiesti al server. A meno che non sia stata variata la configurazione predefinita, esso sarà nel formato CLF (Common Log Format):
remotehost rfc931 authuser [date] "request" status bytes
[Mon Feb 07 23:33:18 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2) [Mon Feb 07 23:33:18 2005] [notice] Digest: generating secret for digest authentication ... [Mon Feb 07 23:33:18 2005] [notice] Digest: done [Mon Feb 07 23:33:18 2005] [notice] Apache/2.0.52 (Gentoo/Linux) PHP/4.3.10 configured -- resuming normal operations [Sat Jun 18 13:01:54 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico [Sat Jun 18 13:02:14 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico [Sat Jun 18 13:02:18 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico [Sat Jun 18 13:02:21 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico [Sat Jun 18 13:02:24 2005] [error] [client 10.0.1.80] File does not exist: /var/www/localhost/htdocs/favicon.ico
Come si può vedere, questo file contiene molte informazioni, la cui quantità
dipende dalla direttiva
[2005-02-11 22:33:19]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi [2005-03-11 19:20:13]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi [2005-03-11 19:34:47]: uid: (1000/vericgar) gid: (1000/1000) cmd: test.cgi
In questo file viene inserita una voce di log ogni qualvolta uno script viene eseguito tramite CGI o suexec. Se non si riesce a far funzionare degli script tramite suexec, questo è il log da controllare poiché le righe ivi contenute il più delle volte elencheranno i motivi della loro mancata esecuzione.
La sola installazione del modulo non basta, bisogna attivarlo esplicitamente. Si usa questa modalità per rendere più facile l'attivazione e la disattivazione dei singoli moduli, a sua volta si semplifica l'individuazione di quelli che creano problemi, permettendo di testarli e disabilitarli facilmente.
Quando si installa un modulo, dovrebbe venire visualizzato un messaggio simile a questo:
* * To enable mod_layout, you need to edit your /etc/conf.d/apache2 file and * add '-D LAYOUT' to APACHE2_OPTS. * * * Configuration file installed as * /etc/apache2/modules.d/15_mod_layout.conf * You may want to edit it before turning the module on in /etc/conf.d/apache2 *
Il messaggio è piuttosto chiaro. Dice esattamente cosa fare per abilitare questo modulo.
Se questo messaggio è andato perso, c'è un altro modo per scoprire cosa
aggiungere a
<IfDefine LAYOUT>
<IfModule !mod_layout.c>
LoadModule layout_module modules/mod_layout.so
</IfModule>
</IfDefine>
Il blocco
Ci sono diverse opzioni, specificate nella configurazione predefinita e spiegate
in modo dettagliato in
È possibile trovate tutta la documentazione per i moduli incorporati nella
Questo succede il più delle volte dopo un aggiornamento che guasta la compatibilità binaria nel pacchetto APR (e ciò può avvenire per vari motivi). Per correggere il problema, si deve ricompilare il tool stack di Apache:
(assicurarsi di eseguire le operazioni in quest'ordine, è molto importante!) (per prima cosa, si deve rimuovere la versione correntemente installata di apache) # emerge -aCv '=www-servers/apache-2*'(poi bisogna ricompilare il tool stack) # emerge -av '=dev-libs/apr-0*' '=dev-libs/apr-util-0*'(Quindi si reinstalla apache) # emerge -av '=www-servers/apache-2*'(si controllano i pacchetti dipendenti da apache) $ equery depends www-servers/apache [ Searching for packages depending on www-servers/apache... ] dev-php/phpsysinfo-2.3-r2 dev-php/phpsysinfo-2.1-r2 dev-lang/php-5.2.4_p20070914-r2 net-www/mod_layout-4.0.1a-r1 www-servers/gorg-0.5(infine si ricompilano gli eventuali moduli installati) # emerge -av '=dev-lang/php-5.2.4_p20070914-r2' '=net-www/mod_layout-4.0.1.a-r1'
Se si continua ad avere problemi anche dopo aver seguito le istruzioni precedenti, il colpevole è molto probabilmente uno dei moduli aggiuntivi installati.
Come prima cosa disabilitare tutti i moduli aggiuntivi, quindi riavviare Apache.
(modificare /etc/conf.d/apache2) (prima della modifica) APACHE2_OPTS="-D PHP5 -D USERDIR -D SSL"(dopo la modifica) APACHE2_OPTS=""
# /etc/init.d/apache2 stop(assicurarsi che apache sia completamente arrestato) # ps -A # /etc/init.d/apache2 start
Se Apache smette di andare in segfault e restituire pagine vuote, allora si avrà la certezza che la causa è uno dei moduli aggiuntivi. Per scoprire quale, basta attivarne uno alla volta, riavviando completamente apache ogni volta.
Quando Apache smetterà di funzionare dopo aver aggiunto un modulo, si saprà che quel modulo è quello che crea problemi. Di solito, la sua ricompilazione risolverà il problema.
Se dopo la ricompilazione del modulo e il riavvio di apache, esso va in
segfault o restituisce pagine vuote, è consigliabile
Certe volte Apache sembra restituire il codice degli script PHP o CGI, invece
di eseguirli e restituire il loro output. Se ciò succede anche con il modulo
abilitato in
Questo problema qualche volta può anche essere notato solo quando si accede al server web usando il suo nome DNS ma non accedendoci usando il suo indirizzo IP. È un chiaro segnale che il problema è relativo alla cache.
Il problema può essere corretto pulendo la cache del browser web e di ogni eventuale proxy web, come squid o wwwoffle.
Se si ottiene questo errore, probabilmente è stato inserito qualche spazio di
troppo nella variabile
(prima della modifica) CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe"(dopo la modifica. notare la rimozione dello spazio) CFLAGS="-O2 -mcpu=pentium3 -march=pentium3 -pipe"
Questo errore si presenta durante la fase di avvio ed è causata dalla presenza
di direttive
(Assicurarsi di essere nella directory di configurazione) # cd /etc/apache2/(Elencare tutte le direttive) # grep Listen httpd.conf vhosts.d/*.conf modules.d/*.conf
Bisogna individuare quali di queste creano dei conflitti all'interno di Apache.
Per esempio, se c'è un
Nella configurazione raccomandata deve esserci un singola direttiva
Con l'aggiornamento ad apache-2.0.54-r13, gli sono state aggiunte due nuove
direttive per correggere il
Le nuove direttive sono
Se nessuno dei precedenti consigli è servito, o se si hanno altre domande da
porre, entrare nel canale IRC degli sviluppatori Apache di Gentoo,