我已经在主文件夹下配置了 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 模块后,它可以按预期工作。