我在 Ubtuntu 12.04LTS 上使用最新的 php5-fpm(来自 debphp)和 nginx 1.4.3 时遇到了非常困难的情况。
简而言之,我php5-fp
根本无法启动,我不断在系统日志中收到此错误:
kernel: [1213013.564441] init: php5-fpm main process (7357) terminated with status 78
kernel: [1213013.564496] init: php5-fpm main process ended, respawning
..... (repeated several times)
kernel: [1213014.143911] init: php5-fpm respawning too fast, stopped
我的根本没有填充。中/var/log/php5-fpm.log
没有php5-fpm.sock
和(或)。php5-fpm.pid
/run
/var/run
我的/etc/php5/fpm/php-fpm.conf
如下:(这个文件现在似乎没有加载,因为我试图将一些虚假信息放入其中但没有引起任何变化)
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
include=/etc/php5/fpm/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /run/php5-fpm.pid
catch_workers_output = yes
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = debug
; To configure the pools it is recommended to have one .conf file per
; pool in the following directory:
include=/etc/php5/fpm/pool.d/*.conf
include=/var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
权限检查:
ls -l /etc/php5/fpm/php-fpm.conf
-rwxrwxrwx 1 root root 4641 Nov 6 01:37 /etc/php5/fpm/php-fpm.conf
我的include=/var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
(这个文件好像不再加载了)
[www.mysite.com]
listen = /run/php5-fpm.sock
# listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www.mysite.com
listen.group = mysite.com
listen.mode = 0666
user = www.mysite.com
group = mysite.com
pm = dynamic
pm.max_requests = 0
pm.max_children = 15
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.status_path = /php_pool_wwww.mysite.com_status
ping.path = /www.mysite.com_ping
ping.response = www.mysite.com_pong
request_terminate_timeout = 30
request_slowlog_timeout = 20
slowlog = /var/www/vhosts/mysite.com/w/w/w/www/logs/php-slow.log
rlimit_files = 131072
rlimit_core = unlimited
chroot = /var/www/vhosts/mysite.com/w/w/w/www/
; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
; chdir = /htdocs
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
security.limit_extension = .php
; php_value/php_flag - you can set classic ini defines which can
; be overwritten from PHP call 'ini_set'.
; php_admin_value/php_admin_flag - these directives won't be overwritten by
; PHP call 'ini_set'
php_flag[display_errors] = on
php_admin_value[error_log] = /logs/php_err.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 100M
php_value[max_execution_time] = 300
权限检查:
ls -l /var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
-rwxr-xr-x 1 www.mysite.com mysite.com 1830 Nov 6 01:05 var/www/vhosts/mysite.com/w/w/w/www/config/fpm-pool.conf
用户/组权限检查:
groups www.mysite.com
www.mysite.com : www.mysite.com www-data mysite.com
我认为这与 nginx 无关,因为php5-fpm
它本身现在根本无法启动,但为了获得所有信息:nginx 也设置为使用相同的用户/组
答案1
upstart 监视的进程已终止,但池工作进程仍在运行。要修复此问题,请运行:
sudo killall php-fpm
sudo start php5-fpm
php5-fpm 作业将反复以状态 78 退出,直到所有旧工作线程都停止运行。请注意,即使 upstart 不在管理该服务,服务器通常在此状态下仍可运行。但是,当它最终停止运行时,不会自动重生,因此应尽快修复。简单的重新启动也可以解决问题,但会导致停机。
答案2
我也遇到了这些错误/var/log/syslog
:
init: php5-fpm main process (7357) terminated with status 78
init: php5-fpm main process ended, respawning
init: php5-fpm respawning too fast, stopped
笔记
我尝试使用这些建议但没发现区别。
添加
php5-fpm
为服务不起作用使用:update-rc.d php-fpm defaults
即使我只在特定运行级别触发它。这可以再次被移除使用:
update-rc.d -f php-fpm remove
如果不安装为服务,
php5-fpm
仍会尝试启动(并失败)跑步
service --status-all | grep php
总是显示php5-fpm
为停止,即使在我下面修复之后也是如此。
使固定
但是,使用来自@Zenexer 的 kill 提示,我得到了以下脚本:
#!/bin/bash
# start-php5-fpm-reboot.sh
# Add a delay, otherwise the script fires too soon
sleep 30
# Kill all php5 children
killall php5-fpm
# Start the php5-fpm service
/usr/bin/service php5-fpm start
将其放置在例如,确保 root 具有可执行权限,然后使用并添加以下行将/etc/php5/fpm
其添加为 cron 作业:sudo crontab -e
@reboot /etc/php5/fpm/start-php5-fpm-reboot.sh
答案3
我最近遇到了同样的问题。原来是另一个进程已经在监听同一个端口。为了发现哪个进程正在运行,我运行了以下命令:
sudo netstat -nltp
事实证明它hhvm
已经在监听端口 9000。
tcp6 0 0 :::9000 :::* LISTEN 17765/hhvm
一旦我停止 hhvm 守护进程,php5-fpm 就成功启动了。