Apache 2.4.9 不遵守 PidFile 指令

Apache 2.4.9 Does Not Respect PidFile Directive

回复:Mac OS X Yosemite 10.10.1,Apache 2.4.9

Apache 2.4.9 似乎忽略了 PidFile 指令,并且总是在 /var/run/httpd.pid 处创建一个进程 ID 文件。这使得无法启动多个 httpd 实例,每个实例都在不同的端口上侦听。例如Apache 2.2.26就没有这个问题。

所以你自己看看:

1) 修改 Apache 的 "default" Mac OS X 配置文件 /etc/apache2/httpd.conf,以包含(紧跟在 ServerRoot 之后)指令,例如:

PidFile "/var/log/apache2/apache.pid"

2)这样启动Apache:

sudo apachectl start

3) 观察到指定的 .pid 文件丢失,Apache 创建了 /var/run/httpd.pid.

如何修复?

这不是错误。您刚刚忽略了一个事实,即默认配置包括 /etc/apache2/extra/httpd-mpm.conf,它在第 12 行设置了 PidFile

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
<IfModule !mpm_netware_module>
    PidFile "/private/var/run/httpd.pid"
</IfModule>