2012-07-18 139 views
18

我剛剛安裝在我的專用服務器上的lighttpd,的mod_fastcgi啓用,所以我追加了以下行lighttpd.conf文件:Lighttpd的403禁止PHP文件

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

但它仍然不幫助,因爲當我嘗試在我的Web瀏覽器中輸入PHP文件時,我收到了403 - Forbidden消息...當我從我的web根目錄中刪除index.php文件並將index.html置於那裏時,那麼一切都很好,沒有錯誤,無論index.php文件有100行還是隻有一行 - <?php echo 'test'; ?>它總是顯示一個403 - Forbidden,我現在沒有想法。

爲什麼它會發生?

我的網站根目錄的ls -la

# 
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

你可以顯示你的web根目錄的ls -la嗎?這很可能是您的權限錯誤。 – Martin 2012-07-18 09:09:54

+0

#與我的問題編號 – Scott 2012-07-18 09:14:58

+0

和什麼用戶是php-cgi運行?你的日誌中是否還有錯誤? – Martin 2012-07-18 09:18:38

回答

14

你的PHP配置不正確。 檢查你的lighttpd的error.log 它會說明是這樣的:

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

我使用:

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" 
       ))) 

確保FastCGI的是modules.conf中啓用

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

我同樣的問題。解決方法與移動配置文件一樣簡單,因此已啓用。我所做的只是......

$ 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/ 

,並重新加載...

$ service lighttpd force-reload 
+2

這不是一個正確的方法。您一定沒有運行lighty-enable-mod命令。 – 2014-02-14 18:27:32

10

同樣的問題,爲薄荷修復了安裝PHP5-CGI包。
sudo apt-get install php5-cgi
使FastCGI的模塊
sudo lighttpd-enable-mod fastcgi fastcgi-php
終於重裝
sudo service lighttpd force-reload

+0

這是唯一與我一起工作的代碼我使用php5-cgi – 2014-11-28 16:25:28

+0

謝謝,這對我很有用 – 2016-12-01 11:22:51

+0

應該使用'sudo apt-get install php7.0-cgi'爲現代disto的 – Nimjox 2017-12-17 04:04:17

1

可能性不大,但需要注意的是另一個可能的原因是 「403禁止」 的響應。

檢查任何訪問模塊(mod_access)在配置文件中聲明(lighttpd.conf)

例子:

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

Docs: Module mod_access