Edit report at https://bugs.php.net/bug.php?id=62033&edit=1
ID: 62033 Updated by: f...@php.net Reported by: js at justinsamuel dot com Summary: php-fpm exits with status 0 on some failures to start -Status: Analyzed +Status: Feedback Type: Bug Package: FPM related Operating System: Linux (Ubuntu 12.04) PHP Version: 5.4.3 Assigned To: fat Block user comment: N Private report: N New Comment: I've attached a real patch to this bug report. Can you please test it ? thx ++ Jerome Previous Comments: ------------------------------------------------------------------------ [2012-05-23 22:50:51] f...@php.net The following patch has been added/updated: Patch Name: bug62033.patch Revision: 1337813451 URL: https://bugs.php.net/patch-display.php?bug=62033&patch=bug62033.patch&revision=1337813451 ------------------------------------------------------------------------ [2012-05-23 22:10:59] f...@php.net This is strange ... can you please test the following patch and see if exit code is 42 on error ? diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 95a7623..62c1b69 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -1803,7 +1803,8 @@ consult the installation file that came with this distribution, or visit \n\ } if (0 > fpm_init(argc, argv, fpm_config ? fpm_config : CGIG(fpm_config), fpm_prefix, fpm_pid, test_conf, php_allow_to_run_as_root)) { - return FAILURE; +// return FAILURE; + exit(42); } fpm_is_running = 1; thx ++ Jerome ------------------------------------------------------------------------ [2012-05-23 20:54:11] js at justinsamuel dot com For simplicity here I'm going to focus on 5.3 instead of 5.4. I've tried with the following: * compiled from source (php.net tarballs) on Ubuntu 12.04 * compiled from source (php.net tarballs) on Debian 6 * Ubuntu 12.04's current php5-fpm package * CentOS 6 with current php53u-fpm package from IUS Here's the -tt info: # /opt/test/php5.3/sbin/php-fpm --fpm-config /etc/php-test/fpm.conf -tt [23-May-2012 13:07:26] NOTICE: [General] [23-May-2012 13:07:26] NOTICE: pid = /var/run/php5.3-test.pid [23-May-2012 13:07:26] NOTICE: error_log = /var/log/php5.3-test.log [23-May-2012 13:07:26] NOTICE: syslog.ident = php-fpm [23-May-2012 13:07:26] NOTICE: syslog.facility = 24 [23-May-2012 13:07:26] NOTICE: log_level = unknown value [23-May-2012 13:07:26] NOTICE: emergency_restart_interval = 0s [23-May-2012 13:07:26] NOTICE: emergency_restart_threshold = 0 [23-May-2012 13:07:26] NOTICE: process_control_timeout = 0s [23-May-2012 13:07:26] NOTICE: process.max = 0 [23-May-2012 13:07:26] NOTICE: daemonize = yes [23-May-2012 13:07:26] NOTICE: rlimit_files = 0 [23-May-2012 13:07:26] NOTICE: rlimit_core = 0 [23-May-2012 13:07:26] NOTICE: events.mechanism = epoll [23-May-2012 13:07:26] NOTICE: [23-May-2012 13:07:26] NOTICE: [example.com] [23-May-2012 13:07:26] NOTICE: prefix = undefined [23-May-2012 13:07:26] NOTICE: user = fakeuser [23-May-2012 13:07:26] NOTICE: group = fakegroup [23-May-2012 13:07:26] NOTICE: listen = /tmp/php5.3-test.sock [23-May-2012 13:07:26] NOTICE: listen.backlog = 128 [23-May-2012 13:07:26] NOTICE: listen.owner = root [23-May-2012 13:07:26] NOTICE: listen.group = root [23-May-2012 13:07:26] NOTICE: listen.mode = 0700 [23-May-2012 13:07:26] NOTICE: listen.allowed_clients = undefined [23-May-2012 13:07:26] NOTICE: pm = ondemand [23-May-2012 13:07:26] NOTICE: pm.max_children = 1 [23-May-2012 13:07:26] NOTICE: pm.start_servers = 0 [23-May-2012 13:07:26] NOTICE: pm.min_spare_servers = 0 [23-May-2012 13:07:26] NOTICE: pm.max_spare_servers = 0 [23-May-2012 13:07:26] NOTICE: pm.process_idle_timeout = 10 [23-May-2012 13:07:26] NOTICE: pm.max_requests = 0 [23-May-2012 13:07:26] NOTICE: pm.status_path = undefined [23-May-2012 13:07:26] NOTICE: ping.path = undefined [23-May-2012 13:07:26] NOTICE: ping.response = undefined [23-May-2012 13:07:26] NOTICE: access.log = undefined [23-May-2012 13:07:26] NOTICE: access.format = undefined [23-May-2012 13:07:26] NOTICE: slowlog = undefined [23-May-2012 13:07:26] NOTICE: request_slowlog_timeout = 0s [23-May-2012 13:07:26] NOTICE: request_terminate_timeout = 0s [23-May-2012 13:07:26] NOTICE: rlimit_files = 0 [23-May-2012 13:07:26] NOTICE: rlimit_core = 0 [23-May-2012 13:07:26] NOTICE: chroot = undefined [23-May-2012 13:07:26] NOTICE: chdir = undefined [23-May-2012 13:07:26] NOTICE: catch_workers_output = no [23-May-2012 13:07:26] NOTICE: security.limit_extensions = .php .phar [23-May-2012 13:07:26] NOTICE: [23-May-2012 13:07:26] NOTICE: configuration file /etc/php-test/fpm.conf test is successful Here's the version info for builds I've repeated this problem with. I haven't had any builds not show show this problem yet. ## on Ubuntu 12.04, built from source # /opt/test/php5.3/sbin/php-fpm --version PHP 5.3.13 (fpm-fcgi) (built: May 23 2012 12:21:32) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies ## on Ubuntu 12.04, using distro's package # php5-fpm --version PHP 5.3.10-1ubuntu3.1 (fpm-fcgi) (built: May 4 2012 02:28:04) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies ## on Debian 6, built from source # /opt/test/php5.3/sbin/php-fpm --version PHP 5.3.13 (fpm-fcgi) (built: May 23 2012 15:05:00) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies ## on CentOS 6, using packages from IUS # php-fpm --version PHP 5.3.13 (fpm-fcgi) (built: May 8 2012 15:44:17) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies As a sanity check, I've repeated the problem again on all of the above versions with the same config. They all show the same error but exit with 0. ------------------------------------------------------------------------ [2012-05-23 07:36:58] f...@php.net Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. I can't reproduce the problem. On my side with both up2date sources for 5.3 and 5.4: root@dev:/home/fat/dev/php-git/php-5.4# ./sapi/fpm/php-fpm ; echo $? [23-May-2012 09:32:03] ERROR: [pool direct] cannot get uid for user 'fatprout' [23-May-2012 09:32:03] ERROR: FPM initialization failed 255 root@dev:/home/fat/dev/php-git/php-5.4# ./sapi/fpm/php-fpm ; echo $? [23-May-2012 09:32:29] ERROR: [pool direct] cannot get gid for group 'fatprout' [23-May-2012 09:32:29] ERROR: FPM initialization failed 255 which version of PHP are you using ? (sources from php.net you have compiled or a package from a distro ?) Can you send me the result of php-fpm --version php-fpm -tt thx ------------------------------------------------------------------------ [2012-05-14 22:00:38] js at justinsamuel dot com Description: ------------ When the php-fpm command fails because the 'user' value of a pool specifies a nonexistent user, php-fpm exits with 0 rather than a non-zero status. This is incorrect and causes problems with init scripts, for example. This happens with both php 5.3 and 5.4. Test script: --------------- Snippet of a pool configuration which will trigger the bug: [example.com] user = fakeuser ... Expected result: ---------------- php-fpm should exit with a non-zero status in all cases where there is an error which causes it to fail to start (including, but not limited to, nonexistent users). Actual result: -------------- $ php-fpm [14-May-2012 14:39:40] ERROR: [pool example.com] cannot get uid for user 'fakeuser' [14-May-2012 14:39:40] ERROR: FPM initialization failed $ echo $? 0 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=62033&edit=1