/usr/local/php/etc/php-fpm.conf的内容如下:
[global] pid = run/php-fpm.pid error_log = log/php-fpm.log log_level = notice [www] listen = /tmp/php-cgi-72.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic pm.max_children = 100 pm.start_servers = 20 pm.min_spare_servers = 20 pm.max_spare_servers = 70 request_terminate_timeout = 100 request_slowlog_timeout = 30 slowlog = var/log/slow.log
PHP-FPM启动后,没有生成socket文件。以下为排障过程。
查看php错误日志
[root@VM_0_12_centos log]# tail /usr/local/php/var/log/php-fpm.log [06-Sep-2018 09:39:47] NOTICE: fpm is running, pid 407 [06-Sep-2018 09:39:47] NOTICE: ready to handle connections
日志显示一切正常。
查看tmp目录权限
[root@hqidicom ~]# stat -c "%a %n" /tmp 1777 /tmp
/tmp目录权限1777,正常,这里只能是1777,其他的0777什么的都不行,会给系统带来各种问题.
确认当前使用的配置文件
[root@hqidicom ~]# ps aux |grep php |grep master |awk '{print $NF}' (/usr/local/php/etc/php-fpm.conf)
当前使用的配置文件没问题。
直接搜索 php-cgi.sock 文件
find / -name "php-cgi-72.sock" /tmp/systemd-private-c9e0943767bc4ef4b3cdb654063f3248-php-fpm.service-GRQqJq/tmp/php-cgi-72.sock
sock文件确实生成了,但不在我们预设的位置,看到“systemd”字样,我就知道肯定又是Lennart Poettering在添乱了。原来他认为/tmp目录不安全,就在/tmp目录里面开了一些单间,让各种程序的socket文件进驻这些单间里面,这样就安全了。。呵呵
最终解决 php-cgi.sock 文件没有按配置生成
1、停止 PHP-FPM 服务
systemctl stop php-fpm.service
2、将文件/etc/systemd/system/multi-user.target.wants/php-fpm.service 里面PrivateTmp的值改为 false
意思是不给php-fpm开单间,直接坐大厅(/tmp),希望大厅没人抽烟。
3、重新加载 systemd
systemctl daemon-reload
4、启动php-fpm,并验证
systemctl start php-fpm.service [root@hqidicom ~]# ls /tmp |grep php-cgi php-cgi-72.sock
最后多说一句,/tmp目录下面/tmp/systemd-private 开头的文件,可以用/usr/lib/tmpfiles.d/tmp.conf 来控制其生命周期。
原创文章,转载请注明: 转载自笛声
本文链接地址: PHP-FPM没有生成socket文件
9 条评论
环境的事,一脸懵逼
你这更新的节奏我已经赶不上了
虽然看不懂,但是笛声大佬出品必是精品,就是对大佬这么蜜汁自信
学习到了
学习了,感谢大佬的分享
厉害了 博主,佩服佩服
find / 一下,系统得卡好一会。
/tmp/systemd-private 确实有注意下,很多坑都因它产生
[…] 然后记得再重启一下 PHP-FPM,再去看发现已经生成了 /tmp/php70-php-fpm.sock 文件。如果没有生成,可以参考一下 《PHP-FPM 没有生成 socket 文件》这篇文章,看看是哪里的问题。 […]
-rw-r--r-- 1 root root 3 Dec 4 16:20 php-fpm.pid
srw-rw---- 1 root root 0 Dec 4 16:20 http://www.sock
这样是不行的,
http://www.sock权限问题请问一下:
我手动把www.sock权限改成662,就可以了,但服务器重启了就不行,该文件还是变成660就不行了,又得手动改。
另外我看另外一台服务器 该文件srw-rw----+,请问这个+怎么来的
解决办法问题:(一下问题解决其一,即可解决我的问题,最好都告诉我怎么解决,这样我才会进步)
1:如何把www.sock权限改成662重启服务器不变成660
2:如果把权限改成srw-rw----+,这个+是大问题,没百度出来
麻烦,谢谢
文章开头的 listen.mode = 0666 看到没,你改成662就行了,加号是设置了访问控制列表的原因,你问问设置的人为什么要设,出于安全考虑吗