在运行带有 mod_php 的 Apache 2.4 的 Ubuntu 18 上。
每当我们获得 PHP 的软件包更新时,使用apachectl graceful
或重新启动 Apacheapachectl restart
都不会使新的 PHP 版本生效。但是,apachectl stop
其次apachectl start
确实重新加载了正确版本的 PHP。
为什么是这样?
Apache 在启动时加载 php 模块(以及许多其他模块)。apachectl restart
- 根据描述man apachectl
- 只是将 SIGHUP 发送到当前驻留在内存中的 Apache 进程,告诉它杀死它的所有子进程(或者,在正常重启的情况下,它是 SIGUSR1 而不是 SIGHUP,只需等到它们完成)然后开始结束,再次分叉孩子们。它不会再次从磁盘重新加载程序二进制文件。
如果您停止 Apache 然后再次启动它,所有正在运行的进程都会从内存中删除并再次从磁盘加载。
apachectl restart
命令和service apache2 restart
命令中的“重新启动”的含义之间似乎存在一些语义不一致(或调用 Apache 服务而不是调用的任何内容apache2
)。后者实际上是停止和启动服务,而apachectl restart
相当于service apache2 reload
. 注意“重新加载”而不是“重新启动”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句