Debian Jessie 上的 nginx 1.12.0 和 php7.1-fpm 的权限问题

Debian Jessie 上的 nginx 1.12.0 和 php7.1-fpm 的权限问题

我已经在主文件夹下配置了 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 文件或文件夹。

答案1

从评论中移动答案

/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 模块后,它可以按预期工作。

相关内容