【问题标题】:Php with Nginx - 403 Forbidden使用 Nginx 的 PHP - 403 禁止
【发布时间】:2018-12-17 15:57:00
【问题描述】:

我想用 nginx 运行项目 yii2(高级模板)。我将virtualbox与vagrant(ubuntu 16.04,php 5.6)一起使用

我有以下设置 nginx 文件

//

vhost1.conf
server {
   listen                *:80;

   server_name  frontend.test;
   client_max_body_size 128m;

   root /var/www/frontend/web/;
     index index.php;

   access_log            /var/log/nginx/vhost1.access.log;
   error_log             /var/log/nginx/vhost1.error.log;
   location / {
     try_files $uri $uri/ /index.php$is_args$args;
   }

   location ~ ^/assets/.*\.php$ {
       deny all;
   }

   location ~ \.php$ {
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_pass 127.0.0.1:9000;
     #fastcgi_pass unix:/var/run/php5-fpm.sock;
     try_files $uri =404;
   }

   location ~* /\. {
     deny all;
   }
 }

我有以下结构项目的许可:

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"

如果我运行 b2bfrontend.test 我得到错误 - 403 Forbidden

【问题讨论】:

    标签: php nginx yii yii2 yii2-advanced-app


    【解决方案1】:

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

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

    到:

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



    原因:它尝试去$uri/,即/var/www/frontend/web/(因为它存在)并进行似乎不允许的目录索引。

    消息已经说了:

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

    【讨论】:

      【解决方案2】:

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

      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;
      }
      

      【讨论】:

        【解决方案3】:

        您的 nginx 服务器很可能在用户 nginx 或 www-data 下运行,而您的文件具有 vagrant:vagran 所有权。检查运行 nginx 的用户是什么,并相应地更改文件的所有权。此外,如果您使用 php-fpm 进行 php,请检查您的 php-fpm 配置并查看那里定义的用户。

        【讨论】:

          猜你喜欢
          • 2015-08-23
          • 1970-01-01
          • 2017-02-24
          • 2019-06-07
          • 2019-04-17
          • 2019-05-29
          • 1970-01-01
          • 2019-01-28
          相关资源
          最近更新 更多