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

CentOS7下启动php74-php-fpm时如何自动创建/run/php-fpm套接字目录?

CentOS7下启动php74-php-fpm时如何自动创建/run/php-fpm套接字目录?

我来帮你解决这个问题!你遇到的情况其实是Remi仓库的php74-php-fpm服务默认没有配置自动创建/run/php-fpm目录,而原生php-fpm依赖systemd的RuntimeDirectory机制来自动生成这个目录。下面给你几个符合systemd规范的标准解决办法,不用折腾shell脚本这类hack:

  • 方法一:修复systemd drop-in配置的生效问题
    你已经尝试用systemctl edit php74-php-fpm.service添加了RuntimeDirectory配置,但可能因为没重载systemd配置或者格式小问题导致没生效。按以下步骤操作:

    1. 重新编辑服务配置:
      systemctl edit php74-php-fpm.service
      
    2. 确保配置内容格式正确,没有多余空格或语法错误:
      [Service]
      RuntimeDirectory=php-fpm
      RuntimeDirectoryMode=0755
      
    3. 保存退出后,重载systemd配置让修改生效:
      systemctl daemon-reload
      
    4. 重启php74-php-fpm服务:
      systemctl restart php74-php-fpm.service
      
      这时候systemd会在启动服务前自动创建/run/php-fpm目录,完全符合原生php-fpm的标准实现逻辑。
  • 方法二:通过tmpfiles.d配置永久创建目录
    如果第一种方法仍不生效,或者你希望/run/php-fpm目录在系统启动时就自动创建(毕竟/run是临时文件系统,重启后会清空),可以通过tmpfiles机制配置:

    1. 创建tmpfiles配置文件:
      vi /etc/tmpfiles.d/php-fpm.conf
      
    2. 添加以下内容:
      d /run/php-fpm 0755 root root -
      
      这里的参数含义:d代表创建目录,后面依次是路径、权限、所有者、所属组、过期时间(-表示不过期)。
    3. 执行命令让配置立即生效(无需重启系统):
      systemd-tmpfiles --create /etc/tmpfiles.d/php-fpm.conf
      
      之后每次系统启动,这个目录都会被自动生成,php74-php-fpm启动时就不会因为找不到目录而失败了。
  • 额外注意事项
    你已经设置的套接字权限:

    listen.owner = nobody
    listen.group = nobody
    listen.mode  = 0666
    

    是完全没问题的,/run/php-fpm目录的0755权限允许nobody用户在其中创建和操作套接字,无需调整。

备注:内容来源于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.04.22 13:18:07