为什么nginx会在index.php文件中返回403错误?

时间:2013-12-28 14:09:24

标签: php nginx webserver virtualhost http-status-code-403

在浏览器中调用“http://test.local/”会返回“403 Forbidden”错误。 调用“http://test.local/index.php”效果很好。

如果我创建“index.html”文件,则调用“http://test.local/”会正确显示“index.html”文件。

所以只是“index.php”文件不起作用。

这是我的虚拟主机配置:

server {
  listen 80;
  server_name test.local;
  root /var/www/public;
  index index.html index.htm index.php;

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

error.log文件包含此错误:

2013/12/28 14:00:57 [error] 2854#0: *50 directory index of "/var/www/public/" is forbidden, client: 10.0.2.2, server: test.local, request: "GET / HTTP/1.1", host: "test.local"

为什么?我现在搜索了很多并检查了权限(这些都设置为777)并尝试了很多其他的东西,但我没有让它工作。

我是nginx的新手,所以我可能只是错过了一些东西。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您的配置似乎很好,但我认为可以简化,试试这个

server {
  listen 80;
  server_name test.local;
  root /var/www/public;
  index index.php;

  location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}