-编辑-更好奇的是我chmod 777 /var/run/php-fastcgi/php-fastcgi.socket
这是否有效。如果不是 www-data、php-www(也不是 root)那么哪个用户正在尝试访问套接字:|
-edit2- 我chown www-data:$FASTCGI_GROUP $SOCKET
在下面脚本的末尾添加了 (就在 之后spawn-fcgi
),这解决了问题,但我很困惑,www-data 在 php-www 组中。为什么它必须是所有者。我没有将 FASTCGI_USER 改回 www-data,因为这会违背目的(它会允许 PHP 文件以 www-data 的身份访问我的所有文件,而我不想这样做)
本质上我想做的是让 PHP 进程不是 www-data,这样如果它受到损害,其损害仅限于我拥有的极少数 PHP 站点。我所做的是创建用户 php-www 并将其组添加到 www-data。当我以 www-data 身份登录时,我可以访问 php-www 中的所有内容,但是 php-www 无法访问除我的 PHP 站点之外的任何内容。完美的。
我运行了 php+nginx。但如何改变它却给我带来了一个问题。我在 init.d 脚本中看到 www-data 提及,它更改了文件夹的所有权。没问题,我把它改成了 php-www。那不是问题。
问题出在spawn脚本上。
#!/bin/bash
FASTCGI_USER=php-www
FASTCGI_GROUP=php-www
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
用户/组行过去常说 www-data,但现在我将它们更改为 php-www。
我启动了 php-fastcgi 和 nginx。当我访问我的网站时,出现 502 bad gateway 错误。当我查看 nginx 日志时,我看到这一行
connect() to unix:/var/run/php-fastcgi/php-fastcgi.socket failed (13: Permission denied) while connecting to upstream
没有权限!?!为什么!?! www-data 确实有组 php-www,并且stat
该文件夹和套接字显示所有者和组 php-www。我可以使用 bot php-www 和 www-data 访问 PHP 文件。为什么我会收到权限错误?我做错了什么?
如果你想看看我的流程
# ps aux | egrep "php|www"
节目
www-data 548 0.0 0.1 1908 492 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
www-data 586 0.0 0.1 1908 488 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
php-www 1611 0.0 1.9 19312 5020 ? Ss 18:20 0:00 /usr/bin/php5-cgi
php-www 1612 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1613 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1614 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1615 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1616 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1617 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
www-data 1776 0.0 0.6 5428 1684 ? S 18:27 0:00 nginx: worker process
php-www 1967 0.0 1.9 19312 5020 ? Ss 18:40 0:00 /usr/bin/php5-cgi
php-www 1968 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1969 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1970 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1971 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1972 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1973 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
root 2110 0.0 0.2 3300 736 pts/1 S+ 18:55 0:00 egrep php|www
答案1
该套接字可能不是组可读和可写的。
答案2
除了更改套接字权限之外,您还可以编辑 nginx 配置并更改user www-data
为您自己的用户名
答案3
触摸 PHP CGI 套接字文件(创建一个空文件)。将其权限改为777,然后启动php-fastcgi
答案4
将此行添加到您要添加的每个用户会话中的 fpm 池配置文件中。
listen.mode = 0666
像这样/opt/php-5.6.3/etc/fpm.d/user1.conf
[user1]
listen.owner = user1
listen.group = user1
user = user1
group = user1
listen = /opt/php-5.6.3/sockets/user1.sock
listen.mode = 0666
这使得你的套接字可读。通过 chmod 更改套接字权限是一个临时解决方案。因为重新启动服务后,它会更改为之前的状态。
将其更改为您需要的任何内容。喜欢第0660章仅为组和所有者添加权限。但第0666章就可以了。