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


Can't start or stop php-fpm on Ubuntu

我第一次尝试在ubuntu上安装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。

快速回答…你不用init。php-fpm的D脚本控制(停止/启动/状态等),因为它是由较新的'upstart'控制。使用以下服务命令停止和重新启动等。我认为这是一个"bug",它悄悄地退出,没有说明它现在由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

当然应该在这里显示一个错误消息…

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

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

我收到的syslog日志如下:

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配置是否实际工作。在/etc/php5/fpm/pool.d/www.conf中使用以下配置将其配置为在TCP端口上列出我已经正确地指示池如下所示:

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文件中的语法,然后尝试使用service命令重新启动。该服务启动并在所需的端口9000上打开tcp侦听器。vhost也开始工作。因此,请务必使用上述命令检查php-fpm语法和配置,以避免服务无法启动的问题。

通常情况下,初始化脚本不会总是吐出导致这种情况发生的问题。您最好的选择是找到cat /etc/init.d/php5-fpm并找到它试图运行的命令,然后使用该命令手动启动该进程。

从FPM启动脚本的经验来看,FPM通常会从随机日志文件中吐出您无法看到或丢失的错误,然后您将能够找到并修复该错误。一旦解决了这个问题,您的初始化脚本就可以继续运行了。