nginx整合php后,浏览器访问.php文件报错
查看nginx错误日志:
[root@node4 /]# tail -f /usr/local/nginx/logs/error.log
2020/02/15 23:25:22 [crit] 1664#0: *20 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 172.17.0.1, server: localhost, request: "GET /hello.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "172.17.0.14"
我的php是7.3.13版本,网上查资料发现它被配置成/var/run/php-fpm/php-fpm.sock
(实际配置时我把中间的php-fpm文件夹去掉了),而不是/tmp/php-cgi.sock
(php5.6.27是配置的/tmp/php-cgi.sock)。
注意:实际测试中,php7.3.13版本中,listen的sock文件路径不能配置在/tmp文件夹下,否则,不管是否有该sock文件,都报错“文件或文件夹不存在”!
于是修改2处地方的值:
[root@node4 /]# vim /usr/local/nginx/conf/nginx.conf
将location ~ \.php$ {}中的fastcgi_pass的值修改为unix:/var/run/php-fpm.sock;
[root@node4 conf]# vim /usr/local/php/etc/php-fpm.d/www.conf
修改listen项: listen = /var/run/php-fpm.sock
再次尝试,报另一个错:
2020/02/15 23:47:19 [crit] 63#0: *1 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 172.17.0.1, server: localhost, request: "GET /hello.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "172.17.0.14"
原因:sock文件没有正确配置好所属用户和组,其所属用户和组都为root,导致www账户没有权限操作该sock文件。是因为忘记放开一些配置的注释了。修改以下配置文件:
vim /usr/local/php/etc/php-fpm.d/www.conf
去掉以下2行的注释符号(;):
listen.owner=www
listen.group=www
可以正常访问。