1--TEST-- 2preload_user=root is allowed under non-cli SAPIs 3--INI-- 4--EXTENSIONS-- 5opcache 6posix 7--SKIPIF-- 8<?php 9require dirname(__DIR__, 3) . '/sapi/fpm/tests/skipif.inc'; 10if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows'); 11if (posix_geteuid() !== 0) die('skip Test needs root user'); 12if (posix_getpwnam('root') === false) die('skip Root user does not exist'); 13?> 14--FILE-- 15<?php 16 17require_once dirname(__DIR__, 3) . '/sapi/fpm/tests/tester.inc'; 18 19$cfg = <<<EOT 20[global] 21error_log = {{FILE:LOG}} 22[unconfined] 23listen = {{ADDR}} 24pm = dynamic 25pm.max_children = 5 26pm.start_servers = 2 27pm.min_spare_servers = 1 28pm.max_spare_servers = 3 29EOT; 30 31$code = <<<EOT 32<?php 33var_dump(function_exists("f1")); 34var_dump(function_exists("f2")); 35?> 36OK 37EOT; 38 39$args = []; 40if (file_exists(ini_get('extension_dir').'/opcache.so')) { 41 $args[] = '-dzend_extension='.ini_get('extension_dir').'/opcache.so'; 42} 43if (file_exists(ini_get('extension_dir').'/posix.so')) { 44 $args[] = '-dextension='.ini_get('extension_dir').'/posix.so'; 45} 46$args = [ 47 ...$args, 48 '-dopcache.enable=1', 49 '-dopcache.optimization_level=-1', 50 '-dopcache.preload='.__DIR__.'/preload.inc', 51 '-dopcache.preload_user=root', 52 '-dopcache.log_verbosity_level=2', 53 '-R', 54]; 55 56$tester = new FPM\Tester($cfg, $code); 57$tester->start($args); 58$tester->expectLogStartNotices(); 59$tester 60 ->request() 61 ->expectBody([ 62 'bool(true)', 63 'bool(false)', 64 'OK', 65 ]); 66$tester->terminate(); 67$tester->close(); 68 69?> 70Done 71--EXPECT-- 72Done 73--CLEAN-- 74<?php 75require_once dirname(__DIR__, 3) . '/sapi/fpm/tests/tester.inc'; 76FPM\Tester::clean(); 77?> 78