如何使用Nginx和php7.2-fpm允许访问php文件?

时间:2020-01-01 16:51:40

标签: php nginx fastcgi

问题是我无法在安装了php7.2-fpm的nginx网站中访问简单的test.php文件。

php7.2-fpm和nginx v.1.16.0已安装并运行良好:

sudo systemctl php7.2-fpm status

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-01-01 14:16:59 UTC; 5s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 21984 (php-fpm7.2)
   Status: "Ready to handle connections"
    Tasks: 3 (limit: 2316)
   Memory: 8.2M
   CGroup: /system.slice/php7.2-fpm.service
           ├─21984 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
           ├─22005 php-fpm: pool www
           └─22006 php-fpm: pool www

Jan 01 14:16:59 wordpress systemd[1]: Starting The PHP 7.2 FastCGI Process Manager...
Jan 01 14:16:59 wordpress systemd[1]: Started The PHP 7.2 FastCGI Process Manager.

sudo systemctl status nginx

● nginx.service - nginx - high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-01-01 15:01:27 UTC; 27s ago
     Docs: http://nginx.org/en/docs/
  Process: 819 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 855 (nginx)
    Tasks: 2 (limit: 2316)
   Memory: 5.8M
   CGroup: /system.slice/nginx.service
           ├─855 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─856 nginx: worker process

Jan 01 15:01:26 wordpress systemd[1]: Starting nginx - high performance web server...
Jan 01 15:01:27 wordpress systemd[1]: Started nginx - high performance web server.

这是Web服务器的默认conf文件:

sudo vim /etc/nginx/conf.d/default.conf 

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    location ~ \.php$ {
        fastcgi_pass    unix:/run/php/php7.2-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }
}

尝试过的解决方案:

  1. /etc/php/7.2/fpm/pool.d/www.conf中未注释的listen-mode 0660
  2. 在服务器块的位置指令中插入include snippets/fastcgi-php.conf(不存在snippets / fastcgi-php.conf)
  3. 将所有这些都包含在default.conf文件中:

    location ~ \.php$ {
        fastcgi_pass    unix:/run/php/php7.2-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;  
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 512k;
        fastcgi_buffers 512 16k;
        fastcgi_busy_buffers_size 1m;
        fastcgi_temp_file_write_size 4m;
        fastcgi_max_temp_file_size 4m;
        fastcgi_intercept_errors off;
    
        fastcgi_param SCRIPT_FILENAME   $request_filename;
        fastcgi_param PATH_INFO         $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param QUERY_STRING      $query_string;
        fastcgi_param REQUEST_METHOD    $request_method;
        fastcgi_param CONTENT_TYPE      $content_type;
        fastcgi_param CONTENT_LENGTH    $content_length;
        fastcgi_param SCRIPT_NAME       $fastcgi_script_name;
        fastcgi_param REQUEST_URI       $request_uri;
        fastcgi_param DOCUMENT_URI      $document_uri;
        fastcgi_param DOCUMENT_ROOT     $document_root;
        fastcgi_param SERVER_PROTOCOL   $server_protocol;
        fastcgi_param REQUEST_SCHEME    $scheme;
        fastcgi_param HTTPS             $https if_not_empty;
        fastcgi_param HTTP_PROXY        "";
        fastcgi_param GATEWAY_INTERFACE CGI/1.1;
        fastcgi_param SERVER_SOFTWARE   nginx/$nginx_version;
        fastcgi_param REMOTE_ADDR       $remote_addr;
        fastcgi_param REMOTE_PORT       $remote_port;
        fastcgi_param SERVER_ADDR       $server_addr;
        fastcgi_param SERVER_PORT       $server_port;
        fastcgi_param SERVER_NAME       $server_name;
        fastcgi_param REDIRECT_STATUS   200;
    }
    

现在,每当尝试test.php时,我都会被拒绝访问 日志/var/log/nginx/error.log的内容:

2020/01/01 15:22:07 [crit] 1644#1644: *1 connect() to unix:/run/php/php7.2-fpm.sock failed 
(13: Permission denied) while connecting to upstream, client: 192.168.2.23, server: 
localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.2- 
fpm.sock:", host: "192.168.2.102"
  1. 在nginx.conf中,用户设置为www-data www-data。 重新启动后,nginx进程的所有者被验证为“ www-data”(使用命令ps -aux | grep nginx

  2. 授予文件夹权限:

    sudo chgrp www-data /usr/share/nginx/html/
    sudo chmod g+rwxs /usr/share/nginx/html /
    

0 个答案:

没有答案