3

我正在使用默认设置的 PHP-FPM。我的服务器正在运行最新的 Arch Linux。

我发出命令sudo systemctl restart php-fpm,需要五分钟才能重新启动并返回提示。

这个问题有已知的解决方案吗?

4

1 回答 1

3

这是由 PHP-FPM 的 systemctl 脚本的创建方式引起的。我也有同样的问题。这是我解决它的方法。

首先找到你的启动脚本,如果你不知道你能做什么systemctl status php-fpm,你会看到类似:/etc/systemd/system/php.service

现在编辑这个文件,它应该看起来像这样:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/run/php-fpm/php-fpm.pid
PrivateTmp=true
ExecStart=/usr/bin/php-fpm --nodaemonize --pid /run/php-fpm/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

将其更改为:

[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/php-fpm --nodaemonize
ExecReload=/bin/kill -HUP $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target

文件更改之一运行此命令以刷新 systemctl ->systemctl daemon-reload

现在重新启动 FPM。我建议在更改此文件之前先关闭 FPM。一旦进行更改,FPM 将立即启动/停止/重新启动。

现在我还不知道为什么,但有时在我做出这个改变之后,FPM 似乎仍然需要永远启动/停止/重新启动。所以我只是继续并重新启动了我的机器,从那时起它就是即时的。所以我猜有些东西挂了,我还没有找到,但重启解决了这个问题。我知道你不应该重新启动,但是直到我能找到它到底挂在哪里之前,这已经成功了。

于 2013-09-26T14:24:29.017 回答