2012-07-18 130 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