Nginx

Debian Jessie 上 nginx 1.12.0 和 php7.1-fpm 的權限問題

  • May 31, 2017

我已經在主文件夾下配置了 php-fpm 和 nginx 進行開發,但我一直無法解決權限問題。似乎 php7.1-fpm.sock 仍然拒絕連接,即使所有權限似乎都是正確的。

錯誤:

root@xps:/var/log/nginx# cat error.log 
2017/05/29 00:41:23 [crit] 27326#27326: *1 connect() to unix:/run/php/php7.1-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: sub.tld.com, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "sub.tld.com"

每次我嘗試訪問 web 根目錄時都會發生這種情況,它應該顯示:

<?php echo phpinfo(); ?> 

在瀏覽器視窗中。

nginx.conf

user darin darin;
[...]

用於 nginx 的 sub.tld.com.conf

server_name sub.tld.com
root /home/darin/www
[...]
location ~ \.php$ {
   try_files $uri /index.php =404;
   fastcgi_pass unix:/run/php/php7.1-fpm.sock;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
}

php-fpm 的 www.conf

user = darin
group = darin
[...]
listen = /run/php/php7.1-fpm.sock
[...]
listen.owner = darin
listen.group = darin
listen.mode = 0660
[...]

/run/php 似乎是 /var/run/php 的符號連結。也許這是為了簡化配置。我不確定,但是將套接字文件指向 /var/run/php 和 /run/php 應該可以工作。

root@xps:/etc/nginx/conf.d# ls -l /var/run/php/
total 4
-rw-r--r-- 1 root  root  4 May 29 14:33 php7.1-fpm.pid
srw-rw---- 1 darin darin 0 May 29 14:33 php7.1-fpm.sock

root@xps:/etc/nginx/conf.d# ls -l /run/php/
total 4
-rw-r--r-- 1 root  root  4 May 29 14:33 php7.1-fpm.pid
srw-rw---- 1 darin darin 0 May 29 14:33 php7.1-fpm.sock

nginx程序

ps aux | grep nginx
root      5489  0.0  0.0  31884   880 ?        Ss   14:33   0:00 nginx: 
master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
darin     5490  0.0  0.0  32308  3536 ?        S    14:33   0:00 nginx: worker process

fpm 程序

ps aux | grep fpm
root      5535  0.0  0.7 642880 60172 ?        Ss   14:33   0:00 php-fpm: master process (/etc/php/7.1/fpm/php-fpm.conf)                      
darin     5537  0.0  0.1 642880 12472 ?        S    14:33   0:00 php-fpm: pool www                                                            
darin     5563  0.0  0.1 642880 12472 ?        S    14:33   0:00 php-fpm: pool www 

我閱讀了大量配置文章,配置文件似乎是正確的。有一篇文章表明我需要更改 /var/lib/nginx 的權限,所以 darin:darin 擁有它,但我沒有找到 /var/lib/nginx 文件或文件夾。

從評論中移動答案

/run/php 上有錯誤的權限

drwxr-xr-x 2 www-data www-data 80 May 29 14:33 php

為了糾正這個問題,/run/php 上的權限已更改為匹配 nginx 使用者:

chown darin:darin /run/php

更正權限問題後,嘗試訪問 index.php 頁面時仍然出現應用程序錯誤。

以下軟體包之一導致了問題:"libphp7.1-embed php-apcu php-ds php-gearman php-geoip php-gmagick php-igbinary php-imagick php-mailparse php-http php-memcache php-memcached php-msgpack php-oauth php-radius php-redis php-rrd php-stomp php-tideways php-uploadprogress php-uuid php-xdebug php-yaml".

刪除、清除並重新安裝所需的 php7.1 模組後,它按預期工作..

引用自:https://serverfault.com/questions/852890