我在我的Ubuntu计算机上的nginx日志中看到以下错误:
[crit] 14697#0: *1 connect() to unix:/home/php/run/php-fpm.sock failed (13: Permission denied) while connecting to upstream, client: x.y.z.w, server: mydomain.org, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/home/php/run/php-fpm.sock:", host: "mydomain.org"
以下是套接字的权限:
$ ll /home/php/run
total 8.0K
drwxr-xr-x 2 php php 4.0K Jan 10 18:56 .
drwxr-xr-x 12 php php 4.0K Jan 9 17:33 ..
srw-rw---- 1 php php 0 Jan 10 18:56 php-fpm.sock
" nginx"进程以nginx用户身份运行:
$ ps aux | grep nginx | grep -v grep
root 14694 0.0 0.3 88732 1784 ? Ss 19:08 0:00 nginx: master process /home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf
nginx 14697 0.0 1.0 88732 5112 ? S 19:08 0:00 nginx: worker process
我将nginx用户添加到" php"组:
$ groups nginx
nginx : php
我尝试重新启动nginx和php-fpm,但我遇到了同样的失败。我很困惑,因为套接字具有660的权限,它应该给php组的成员提供读写权限。我也很困惑,因为该文件看似可写;如果我运行su - nginx
然后运行
$ test -w /home/php/run/php-fpm.sock ; echo $?
0
这似乎表明nginx用户可以写入套接字。为什么nginx不能写入套接字?我需要哪些其他信息才能解决这个问题?