Lighttpd 403 禁止 PHP 文件

Posted

技术标签:

【中文标题】Lighttpd 403 禁止 PHP 文件【英文标题】:Lighttpd 403 Forbidden for PHP files 【发布时间】:2012-07-17 06:47:17 【问题描述】:

我刚刚在我的专用服务器上安装了 lighttpd,启用了 mod_fastcgi,所以我在lighttpd.conf 文件中添加了以下行:

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

但这仍然无济于事,因为当我尝试在网络浏览器中输入 PHP 文件时收到 403 - Forbidden 消息...当我从网络根目录中删除 index.php 文件并将index.html 放在那里,那么一切都很好,并且没有错误,无论index.php 文件有100 行还是只有1 行-<?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

【问题讨论】:

你能显示你的网络根的ls -la吗?您的权限可能有误。 #edited my question with that php-cgi 以什么用户身份运行?您的日志中是否还有任何错误? this 有帮助吗?它解决了用户使用 php 和 lighty 获得 403 的许多错误。 我遇到了同样的问题。尝试了这篇文章中的所有内容,然后在另一个论坛上找到了解决方案,所以这里是:service lighttpd stop; ps -e | grep "lighttpd" 如果你得到结果,你可能有一个完美的配置,但 lighttpd 仍在运行 php 安装之前的配置。只需在进程上运行 kill ,然后重新启动 service lighttpd !请注意,这会停止 lighttpd,所以如果这不是问题,请记住重新启动它 【参考方案1】:

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

确保在 modules.conf 中启用了 fastcgi

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

【讨论】:

【参考方案2】:

同样的问题,Mint 的修复是安装 php5-cgi 包。 sudo apt-get install php5-cgi 启用 fastcgi 模块 sudo lighttpd-enable-mod fastcgi fastcgi-php 最后重新加载sudo service lighttpd force-reload

【讨论】:

这是我使用 php5-cgi 的唯一代码 现代 disto 应该使用 'sudo apt-get install php7.0-cgi' sudo apt-get install php5.6-cgi 由于目前不支持php5-cgi【参考方案3】:

我遇到了同样的问题。修复就像移动配置文件一样简单,因此启用了。我所做的只是......

$ 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

【讨论】:

这不是正确的方法。您一定没有运行 lighty-enable-mod 命令。【参考方案4】:

在 ubuntu 上你可以这样做:

sudo lighty-enable-mod fastcgi 
sudo lighty-enable-mod fastcgi-php

来源:https://wiki.ubuntu.com/Lighttpd%2BPHP

【讨论】:

【参考方案5】:

不太可能,但应注意作为“403 Forbidden”响应的另一个可能原因。

检查配置文件 (lighttpd.conf) 中的任何访问模块 (mod_access) 语句

例子:

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

Docs: Module mod_access

【讨论】:

以上是关于Lighttpd 403 禁止 PHP 文件的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 .htaccess 文件删除 .php 扩展名时出现 403 禁止错误

Apache 2.2 PHP-FPM,php文件在浏览器中禁止403禁止

Heroku 403 禁止静态 js 文件

nginx 上传文件时返回 403 禁止错误

配置 LAMP - 出现 403 禁止错误

上传文件时禁止 Apache 403