无法在 Ubuntu 上启动或停止 php-fpm

php
2022-08-31 00:09:34

我第一次尝试在Ubunutu上安装php-fpm。我通过以下方式安装它

sudo apt-get install php5-fpm

安装完成后,我运行以查看是否有任何内容正在运行。我得到以下内容:ps -waux | grep php5

root      9625  0.5  0.6 133612 12836 ?        Ss   22:49   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)

它看起来像是在运行,所以我试图通过执行来停止它:

sudo /etc/init.d/php5-fpm stop

这似乎无济于事。命令行上没有给出错误消息,当我再次运行时,存在相同的进程。如果我运行,我能够让它停止:ps

sudo service php5-fpm stop

第一次运行此命令时,我收到一个关于无法找到目录的错误,但该过程确实停止了。当我再次启动和停止服务时,它似乎工作正常,我没有收到有关丢失目录的错误消息。

有人可以向我解释为什么 /etc/init.d/php5-fpm 方法不起作用吗?我看过的所有教程都使用此方法来启动和停止php5-fpm。


答案 1

快速回答...你不使用 init.d 脚本来控制 php-fpm 的(停止/启动/状态等),因为它是由较新的“upstart”控制的。使用以下服务命令停止并重新启动等。我认为这有点像一个“错误”,它悄悄地退出,而没有说它现在由暴发户控制。

更详细地看这个问题,就引出了上面的解释。

我在Ubuntu 14.04上看到了完全相同的问题,您可以使用服务命令停止/启动/获取php5-fpm的状态:即这些工作正常:-

# sudo service php5-fpm status
php5-fpm start/running, process 18793
# sudo service php5-fpm stop
php5-fpm stop/waiting
# sudo service php5-fpm status
php5-fpm stop/waiting
# sudo service php5-fpm start
php5-fpm start/running, process 18949
# sudo service php5-fpm status
php5-fpm start/running, process 18949

但是 /etc/init.d/php5-fpm 命令没有效果 :-

# /etc/init.d/php5-fpm stop
# ps -ef | grep php
root     18949     1  0 12:15 ?        00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 18952 18949  0 12:15 ?        00:00:00 php-fpm: pool www                                                       
www-data 18953 18949  0 12:15 ?        00:00:00 php-fpm: pool www                                                       
root     18970 10051  0 12:17 pts/2    00:00:00 grep --color=auto php

请注意,不返回任何内容,并且该过程不会停止。同样,对于状态和启动版本,不返回任何内容,并且进程不受影响。

我发现它退出 init.d 脚本的那行.... :init_is_upstart

# Don't run if we are running upstart
if init_is_upstart; then
    exit 1
fi

当然,它应该在这里声明一条错误消息...比如“使用服务命令停止/启动php-fpm”。


答案 2

我遇到了与Ubuntu 14.10上的php5-fpm有关的类似问题。我已经为其中一个虚拟主机配置了php5-fpm,当尝试浏览网站时,我得到了503服务不可用。每次我都试过

root@testupgrade:~# service php5-fpm restart
stop: Unknown instance:
php5-fpm start/running, process 2775

我在系统日志中得到了以下内容:

Dec  7 14:08:53 testupgrade kernel: [  230.711612] init: php5-fpm main process (2775) terminated with status 78
Dec  7 14:08:53 testupgrade kernel: [  230.711639] init: php5-fpm main process ended, respawning
Dec  7 14:08:53 testupgrade kernel: [  230.866617] init: php5-fpm main process (2783) terminated with status 78
Dec  7 14:08:53 testupgrade kernel: [  230.866643] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.027522] init: php5-fpm main process (2791) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.027548] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.137792] init: php5-fpm main process (2799) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.137807] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.221146] init: php5-fpm main process (2807) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.221161] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.301859] init: php5-fpm main process (2815) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.301874] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.381635] init: php5-fpm main process (2823) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.381649] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.469211] init: php5-fpm main process (2831) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.469225] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.548950] init: php5-fpm main process (2839) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.548964] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.628781] init: php5-fpm main process (2847) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.628795] init: php5-fpm main process ended, respawning
Dec  7 14:08:54 testupgrade kernel: [  231.711933] init: php5-fpm main process (2855) terminated with status 78
Dec  7 14:08:54 testupgrade kernel: [  231.711947] init: php5-fpm respawning too fast, stopped

然后,我尝试的是检查我对此虚拟主机池的php5-fpm配置是否实际正常工作。它被配置为在 TCP 端口上列出,在 /etc/php5/fpm/pool.d/www.conf 中具有以下配置,我已正确指示池按如下方式列出:

listen = 127.0.0.1:9000

我尝试使用service命令重新启动几次,由于它不起作用,我决定检查启动脚本。我编辑了/etc/init/php5-fpm.conf,我注意到我已经有最新的错误修复版本的“重新加载信号USR2”行。然后我注意到下面这一行:

pre-start exec /usr/lib/php5/php5-fpm-checkconf

我检查了 /usr/lib/php5/php5-fpm-checkconf 脚本,并注意到附加到$errors变量的语法检查:

/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf

我在 shell 中执行了它,并注意到以下内容:

root@testupgrade:~# /usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf
[07-Dec-2014 13:46:14] ERROR: [pool www] 'slowlog' must be specified for use with 'request_slowlog_timeout'
[07-Dec-2014 13:46:14] ERROR: failed to post process the configuration
[07-Dec-2014 13:46:14] ERROR: FPM initialization failed

这意味着我已经触摸了我的php-fpm.conf并将其搞砸了,但是错误无处可寻,我没有迹象表明这是php5-fpm服务启动失败的原因。我修复了/etc/php5/fpm/pool.d/www.conf文件中的语法,然后尝试使用服务命令再次重新启动。服务在所需的端口 9000 上启动并打开了 tcp 侦听器。虚拟主机也开始工作。因此,请务必使用上述命令检查php-fpm语法和配置,以避免服务未启动的问题。


推荐