You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7下启动php74-php-fpm时如何自动创建socket目录?

CentOS7下解决remi源php74-php-fpm启动时/run/php-fpm目录缺失的问题

问题场景

在CentOS7上同时部署原生PHP和remi源的PHP7.4,将php74-php-fpm的监听方式从TCP Socket改为Unix Socket,配置如下:

listen = /run/php-fpm/php74.sock
listen.owner = nobody
listen.group = nobody
listen.mode  = 0666

当所有PHP服务都运行时正常,但单独启动php74-php-fpm时,因/run/php-fpm目录不存在导致启动失败。尝试通过systemctl edit添加RuntimeDirectory配置未生效,需用标准方式解决目录自动创建问题。

标准解决方案

方案1:使用tmpfiles.d配置(推荐)

tmpfiles.d是systemd管理临时文件/目录的标准机制,可在系统启动或服务启动前自动创建所需目录:

  1. 创建配置文件:
echo "d /run/php-fpm 0755 root root -" > /etc/tmpfiles.d/php74-fpm.conf
  1. 立即生效配置(无需重启系统):
systemd-tmpfiles --create /etc/tmpfiles.d/php74-fpm.conf

此后无论何时启动php74-php-fpm,/run/php-fpm目录都会被自动创建,系统重启后也会自动重建。

方案2:修正systemd服务单元配置

如果偏好通过服务单元本身控制目录创建,可调整php74-php-fpm的systemd配置:

  1. 编辑服务单元的覆盖文件:
systemctl edit php74-php-fpm.service
  1. 添加以下配置内容:
[Service]
RuntimeDirectory=php-fpm
RuntimeDirectoryMode=0755
RuntimeDirectoryPreserve=yes
  1. 重新加载systemd配置并重启服务:
systemctl daemon-reload
systemctl restart php74-php-fpm

RuntimeDirectoryPreserve=yes可确保目录在服务停止后被保留(或启动时自动创建),解决之前配置未生效的问题。

内容的提问来源于stack exchange,提问作者Alien Life Form

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:22:40