]> granicus.if.org Git - php/commitdiff
Add --force-stderr to fpm
authorGernot Vormayr <gvormayr@gmail.com>
Mon, 6 Jan 2014 23:19:01 +0000 (00:19 +0100)
committerGernot Vormayr <gvormayr@gmail.com>
Mon, 6 Jan 2014 23:19:01 +0000 (00:19 +0100)
sapi/fpm/fpm/fpm.c
sapi/fpm/fpm/fpm.h
sapi/fpm/fpm/fpm_main.c
sapi/fpm/fpm/fpm_stdio.c

index b866f37f2d1778f80ab26cfc97a02b7947e3a604..abfc78680151f391b9a4c52ace123a227b0005bd 100644 (file)
@@ -39,10 +39,11 @@ struct fpm_globals_s fpm_globals = {
        .test_successful = 0,
        .heartbeat = 0,
        .run_as_root = 0,
+        .force_stderr = 0,
        .send_config_pipe = {0, 0},
 };
 
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon) /* {{{ */
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon, int force_stderr) /* {{{ */
 {
        fpm_globals.argc = argc;
        fpm_globals.argv = argv;
@@ -52,6 +53,7 @@ int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int t
        fpm_globals.prefix = prefix;
        fpm_globals.pid = pid;
        fpm_globals.run_as_root = run_as_root;
+        fpm_globals.force_stderr = force_stderr;
 
        if (0 > fpm_php_init_main()           ||
            0 > fpm_stdio_init_main()         ||
index 65d0e0d69127e15aecff30d170195b99eff2583a..68642a955d1b769cab12525c3d4e3d2e66588ad6 100644 (file)
@@ -37,7 +37,7 @@
 
 
 int fpm_run(int *max_requests);
-int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon);
+int fpm_init(int argc, char **argv, char *config, char *prefix, char *pid, int test_conf, int run_as_root, int force_daemon, int force_stderr);
 
 struct fpm_globals_s {
        pid_t parent_pid;
@@ -55,6 +55,7 @@ struct fpm_globals_s {
        int test_successful;
        int heartbeat;
        int run_as_root;
+        int force_stderr;
        int send_config_pipe[2];
 };
 
index 043e0e00a47c01722cc7ff96d6b393660949587e..77e13a2d056c7255e3cfe528aa3790823e88f612 100644 (file)
@@ -157,6 +157,7 @@ static const opt_struct OPTIONS[] = {
        {'R', 0, "allow-to-run-as-root"},
        {'D', 0, "daemonize"},
        {'F', 0, "nodaemonize"},
+        {'O', 0, "force-stderr"},
        {'-', 0, NULL} /* end of args */
 };
 
@@ -918,7 +919,7 @@ static void php_cgi_usage(char *argv0)
                prog = "php";
        }
 
-       php_printf(     "Usage: %s [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p <prefix>] [-g <pid>] [-c <file>] [-d foo[=bar]] [-y <file>] [-D] [-F]\n"
+       php_printf(     "Usage: %s [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p <prefix>] [-g <pid>] [-c <file>] [-d foo[=bar]] [-y <file>] [-D] [-F [-O]]\n"
                                "  -c <path>|<file> Look for php.ini file in this directory\n"
                                "  -n               No php.ini file will be used\n"
                                "  -d foo[=bar]     Define INI entry foo with value 'bar'\n"
@@ -937,6 +938,8 @@ static void php_cgi_usage(char *argv0)
                                "  -D, --daemonize  force to run in background, and ignore daemonize option from config file\n"
                                "  -F, --nodaemonize\n"
                                "                   force to stay in foreground, and ignore daemonize option from config file\n"
+                                "  -O, --force-stderr\n"
+                                "                   force output to stderr in nodaemonize even if stderr is not a TTY\n"
                                "  -R, --allow-to-run-as-root\n"
                                "                   Allow pool to run as root (disabled by default)\n",
                                prog, PHP_PREFIX);
@@ -1569,6 +1572,7 @@ int main(int argc, char *argv[])
        char *fpm_pid = NULL;
        int test_conf = 0;
        int force_daemon = -1;
+        int force_stderr = 0;
        int php_information = 0;
        int php_allow_to_run_as_root = 0;
 
@@ -1697,6 +1701,10 @@ int main(int argc, char *argv[])
                                force_daemon = 0;
                                break;
 
+                        case 'O': /* force stderr even on non tty */
+                                force_stderr = 1;
+                                break;
+
                        default:
                        case 'h':
                        case '?':
@@ -1824,7 +1832,7 @@ 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, force_daemon)) {
+       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, force_daemon, force_stderr)) {
 
                if (fpm_globals.send_config_pipe[1]) {
                        int writeval = 0;
index d81e10150db6d49271963af6ecbc30e9382ad8b6..33b0e01c87cd568bd7dc848ddd03438dc22bc831 100644 (file)
@@ -292,7 +292,7 @@ int fpm_stdio_open_error_log(int reopen) /* {{{ */
        } else {
                fpm_globals.error_log_fd = fd;
 #if HAVE_UNISTD_H
-               if (fpm_global_config.daemonize || !isatty(STDERR_FILENO)) {
+               if (fpm_global_config.daemonize || (!isatty(STDERR_FILENO) && !fpm_globals.force_stderr)) {
 #else
                if (fpm_global_config.daemonize) {
 #endif