树莓派重启后php7.2-fpm.sock未生成,服务重启异常求助
修复树莓派PHP7.2-FPM开机自启异常的问题
这种开机后PHP-FPM sock文件不生成、重启命令卡顿的情况,我在树莓派上折腾Laravel的时候也碰到过,大概率是启动顺序依赖、权限或者系统资源初始化的问题,咱们一步步来排查修复:
1. 调整PHP-FPM的启动依赖,确保它在Nginx之前完全就绪
树莓派开机时如果Nginx先启动,PHP-FPM还没完成初始化,很容易导致socket文件生成异常,甚至重启命令卡住。我们可以给PHP-FPM的服务添加启动依赖规则:
- 编辑PHP-FPM的systemd服务文件:
sudo nano /lib/systemd/system/php7.2-fpm.service - 在
[Unit]区块里添加以下内容,确保它在网络和本地文件系统完全就绪后再启动,且优先级高于Nginx:After=network.target local-fs.target Before=nginx.service - 重新加载systemd配置:
sudo systemctl daemon-reload - 确认PHP-FPM已经设置为开机自启:
sudo systemctl enable php7.2-fpm
2. 检查并修复PHP-FPM socket文件的权限配置
有时候开机时/var/run/php目录的权限还没正确初始化,导致PHP-FPM无法创建sock文件:
- 打开你的
www.conf配置文件:sudo nano /etc/php/7.2/fpm/pool.d/www.conf - 确认以下权限相关配置(如果不对就修改):
listen.owner = www-data listen.group = www-data listen.mode = 0660 - 也可以尝试把socket路径临时换成
/tmp/php7.2-fpm.sock(临时目录的权限问题更少),修改后记得同步更新Nginx配置里的fastcgi_pass路径,然后重启服务:sudo systemctl restart php7.2-fpm nginx
3. 给PHP-FPM添加开机延迟启动(应对树莓派硬件性能限制)
如果上面的方法都不管用,可能是树莓派开机时系统资源不足,导致PHP-FPM初始化卡住。我们可以给它加个延迟启动的服务:
- 创建一个自定义的systemd服务文件:
sudo nano /etc/systemd/system/php7.2-fpm-delay.service - 写入以下内容(这里设置的是延迟10秒启动,你可以根据树莓派的启动速度调整):
[Unit] Description=Delayed start of PHP 7.2 FPM After=network.target [Service] Type=oneshot ExecStart=/bin/sleep 10 ExecStart=/bin/systemctl start php7.2-fpm [Install] WantedBy=multi-user.target - 启用这个延迟服务:
sudo systemctl enable php7.2-fpm-delay.service
4. 查看启动日志定位具体问题
如果还是没解决,就得从日志里找根源了:
- 查看PHP-FPM的专属日志:
sudo tail -n 20 /var/log/php7.2-fpm.log - 或者查看系统启动时PHP-FPM的运行日志:
日志里一般会明确提示是权限错误、配置语法问题还是依赖缺失,根据提示再针对性修复就行。sudo journalctl -u php7.2-fpm.service -b
调整完之后重启树莓派测试一下,应该就能解决开机后sock文件不生成、重启命令卡顿的问题了。
内容的提问来源于stack exchange,提问作者Tagras
相关产品推荐
相关产品推荐

