PHP5-FPM 不会在 /var/run 中创建 unix socket 目录

igo*_*orw 7 php5 php-fpm

我已经设置了php5-fpm绑定到/var/run/php5-fpm.

/etc/php5/fpm/pool.d/www.conf

listen = /var/run/php5-fpm/$pool.sock
Run Code Online (Sandbox Code Playgroud)

问题是它不会自动创建php5-fpm目录。当我重新启动机器时,目录消失了。

如何在启动时自动创建它?或者这个问题有其他解决方案吗?

Gio*_*oni 3

  1. 您可能已经发现,/var/run 的设计是短暂的。检查FHS以获取有关它和其他目录的更多信息。

  2. 在 php-fpm 尝试使用之前, /var/run/php5-fpm 目录必须存在。php-fpm 和 init 脚本似乎都没有创建它,所以你必须介入。

    最简单的选择是调整您的初始化脚本,以非常适合您的环境的方式创建目录。缺点是这会增加您必须在“系统管理工具包”中携带的包袱。

还有另外两个选项涉及更多,但对于您和其他人来说将是永久的解决方案:

  1. 向php-fpm源代码提交补丁,以便它检查 .conf 文件中定义的目录是否存在。这需要了解 C 和 PHP补丁提交流程。

  2. 向您的 Linux 发行版的 init 系统提交补丁,以便它执行相同的操作。这可能更容易(与第一个选项相比),并且可能需要了解 shell 脚本以及您的发行版补丁提交流程的知识。

您可以进行快速修复(更改初始化脚本)并继续,但一个很好的练习是遵循永久选项之一,以便其他人受益。它很简单,可能会让您沉迷于为开源项目做出贡献(如果您还没有这样做,请原谅我的无知)。