FPM must be configured as a user.
Normally it defaults to the current user,
but if that's root it'll fail to startup
unless the --run-as-root option is provided.
Extend that logic into the test runner so that
we don't fail for stupid reasons.
If you're running `make test` as root and you want
FPM tests to run anyway, set TEST_FPM_RUN_AS_ROOT=1
in your environment.
/* Since it's not possible to spawn a process under linux without using a
* shell in php (why?!?) we need a little shell trickery, so that we can
* actually kill php-fpm */
- $fpm = proc_open('killit () { kill $child; }; trap killit TERM; '.get_fpm_path().' -F -O -y '.$cfg.' '.$extra_args.' 2>&1 & child=$!; wait', $desc, $pipes);
+ $asroot = getenv('TEST_FPM_RUN_AS_ROOT') ? '--allow-to-run-as-root' : '';
+ $cmd = get_fpm_path()." $asroot -F -O -y $cfg $extra_args";
+ $fpm = proc_open("killit () { kill \$child; }; trap killit TERM; $cmd 2>&1 & child=\$!; wait",
+ $desc, $pipes);
register_shutdown_function(
function($fpm) use($cfg) {
@unlink($cfg);
die ("skip not for Windows");
}
+
+if (!getmyuid() && !getenv('TEST_FPM_RUN_AS_ROOT')) {
+ die('Refusing to run as root');
+}
+
include dirname(__FILE__)."/include.inc";
if (!get_fpm_path()) {
die("skip FPM not found");
}
-
?>