禁止使用带有Nginx-403的Php

禁止使用带有Nginx-403的Php,php,nginx,yii,yii2,yii2-advanced-app,Php,Nginx,Yii,Yii2,Yii2 Advanced App,我想用nginx运行projectyii2(高级模板)。我将virtualbox与vagrant一起使用(ubuntu 16.04,PHP5.6) 我有以下设置nginx文件 // 我已获得以下结构项目的许可: vagrant@machine1]-[/var/www]-[git master] $ ls -la frontend/ total 68 drwxrwxr-x 1 vagrant vagrant 4096 Jul 5 14:27 ./ drwxrwxr-x 1 vagrant va

我想用nginx运行projectyii2(高级模板)。我将virtualbox与vagrant一起使用(ubuntu 16.04,PHP5.6)

我有以下设置nginx文件

//

我已获得以下结构项目的许可:

vagrant@machine1]-[/var/www]-[git master] 
$ ls -la frontend/
total 68
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 ./
drwxrwxr-x 1 vagrant vagrant 4096 Jul  9 16:14 ../
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 assets/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 bootstrap/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 components/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 config/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 controllers/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 data/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 helpers/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 messages/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 models/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 modules/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 runtime/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 validators/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 views/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 web/
drwxrwxr-x 1 vagrant vagrant 4096 Jul  5 14:27 widgets/
nginx错误日志输出:

2018/07/09 21:42:36 [error] 23865#23865: *1 directory index of "/var/www/frontend/web/" is forbidden, client: 192.168.56.1, server: b2bfrontend.test, request: "GET / HTTP/1.1", host: "b2bfrontend.test"

如果我运行b2bfronted.test我得到错误-403禁止

您的nginx服务器很可能在用户nginx或www数据下运行,而您的文件拥有vagrant:vagran所有权。检查运行nginx的用户,并相应地更改文件的所有权。此外,如果您使用php fpm for php,请检查您的php fpm配置,并查看其中定义的用户。

只需从以下位置修复位置:

location / {
  try_files $uri $uri/ /index.php$is_args$args;
}
致:



原因:它尝试转到
$uri/
,这是
/var/www/frontend/web/
(因为它存在),并尝试执行似乎不允许的目录索引

消息已经说:

目录索引“/var/www/frontend/web/”被禁止


我取消了这行的注释,现在它可以工作了:

fastcgi_pass unix:/var/run/php5-fpm.sock;
在我的例子中,我有Debian 9,所以我对它做了一些修改:

fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
我的完整代码是:

location ~ \.(php|twig)$   {
            try_files $uri =404;
    include       fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;

    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
location ~ \.(php|twig)$   {
            try_files $uri =404;
    include       fastcgi_params;

    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;

    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}