2012-07-18 15 views
18

Ho appena installato lighttpd sul mio server dedicato, mod_fastcgi è abilitato, quindi ho allegato le seguenti righe al file lighttpd.conf:Lighttpd 403 Forbidden per PHP file

fastcgi.server = (".php" => 
("localhost" => 
        (
         "socket" => "/tmp/php-fastcgi.socket", 
         "bin-path" => "/usr/local/bin/php-cgi" 
        ) 
        ) 
) 

Ma ancora non lo fa aiuto, dal momento che sto ricevendo il messaggio 403 - Forbidden quando provo ad inserire un file PHP nel mio browser ... Quando elimino il file index.php dalla mia directory principale web e posto lo index.html lì, allora tutto va bene, e ci sono nessun errore, non importa se il file index.php ha 100 righe o solo uno - <?php echo 'test'; ?> mostra sempre uno 403 - Forbidden, sono fuori di idee ora.

Perché è successo?

ls -la della mia cartella radice del web:

# 
total 6 

    drwxr-xr-x 15 root wheel 1536 Jul 18 10:23 . 
    drwxr-xr-x 4 root wheel 512 Jul 18 08:45 .. 
    drwxr-xr-x 2 www www  512 Jul 1 02:36 cache 
    drwxr-xr-x 2 www www  512 Jul 1 02:36 config 
    drwxr-xr-x 6 www www  512 Jul 1 02:36 inc 
-rw-r--r-- 1 www www  9 Jul 18 11:02 index.php 
+0

Puoi mostrare 'ls -la' della tua web root? È probabile che le tue autorizzazioni siano errate. – Martin

+0

#edita la mia domanda con quello – Scott

+0

e quale utente è in esecuzione php-cgi? Inoltre ci sono errori nei tuoi log? – Martin

risposta

14

Il tuo PHP non è configurato correttamente. controllare la lighttpd error.log esso sarà stato qualcosa di simile a:

(mod_fastcgi.c.1397) [ERROR]: spawning fcgi failed. 

io uso:

fastcgi.server = (".php" => ((          
        "bin-path" => "/bin/php-cgi",    
        "socket" => "/tmp/php.socket",    
        "max-procs" => 1,          
        "bin-environment" => (       
         "PHP_FCGI_CHILDREN" => "16",      
         "PHP_FCGI_MAX_REQUESTS" => "10000"   
        ),   
        "broken-scriptfilename" => "enable" 
       ))) 

assicurarsi che FastCGI è attivata in modules.conf

server.modules = (
    "mod_access", 
    "mod_fastcgi", 
# "mod_alias", 
# "mod_auth", 
# "mod_evasive", 
# "mod_redirect", 
# "mod_rewrite", 
# "mod_setenv", 
# "mod_usertrack", 
) 
6

ho avuto lo stesso problema. La correzione era semplice come spostare i file di configurazione in modo che fossero abilitati. Tutto quello che ho fatto è stato ...

$ ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/ 
$ ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/ 

e ricaricare ...

$ service lighttpd force-reload 
+2

Questo non è un modo corretto per farlo. Non è necessario aver eseguito i comandi mod-lighty-enable-mod. –

10

Stesso problema, la correzione per Zecca era installare il pacchetto php5-cgi.
sudo apt-get install php5-cgi
consentire moduli fastcgi
sudo lighttpd-enable-mod fastcgi fastcgi-php
infine ricaricare
sudo service lighttpd force-reload

+0

questo è l'unico codice funzionato con me sto usando php5-cgi –

+0

grazie, questo ha funzionato per me –

+0

Dovrebbe usare 'sudo apt-get install php7.0-cgi' per la disto moderna – Nimjox

1

improbabile, ma dovrebbe essere notato come un'altra possibile ragione "403 Forbidden" risposte.

Controllare per qualsiasi modulo di accesso (mod_access) istruzioni nel file di configurazione (lighttpd.conf)

Esempio:

 url.access-deny = ("", ".php"); 

Docs: Module mod_access