1--TEST-- 2preload_user is required when euid is 0 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'); 12?> 13--FILE-- 14<?php 15 16require_once dirname(__DIR__, 3) . '/sapi/fpm/tests/tester.inc'; 17 18$cfg = <<<EOT 19[global] 20error_log = {{FILE:LOG}} 21[unconfined] 22listen = {{ADDR}} 23pm = dynamic 24pm.max_children = 5 25pm.start_servers = 2 26pm.min_spare_servers = 1 27pm.max_spare_servers = 3 28EOT; 29 30$code = <<<EOT 31<?php 32var_dump(function_exists("f1")); 33var_dump(function_exists("f2")); 34?> 35OK 36EOT; 37 38$args = []; 39if (file_exists(ini_get('extension_dir').'/opcache.so')) { 40 $args[] = '-dzend_extension='.ini_get('extension_dir').'/opcache.so'; 41} 42if (file_exists(ini_get('extension_dir').'/posix.so')) { 43 $args[] = '-dextension='.ini_get('extension_dir').'/posix.so'; 44} 45$args = [ 46 ...$args, 47 '-dopcache.enable=1', 48 '-dopcache.optimization_level=-1', 49 '-dopcache.preload='.__DIR__.'/preload.inc', 50 '-dopcache.log_verbosity_level=2', 51]; 52 53$tester = new FPM\Tester($cfg, $code); 54$tester->start($args); 55var_dump($tester->getLogLines(1)); 56$tester->terminate(); 57$tester->close(); 58 59?> 60Done 61--EXPECTF-- 62array(1) { 63 [0]=> 64 string(%d) "%sFatal Error "opcache.preload" requires "opcache.preload_user" when running under uid 0 65" 66} 67Done 68--CLEAN-- 69<?php 70require_once dirname(__DIR__, 3) . '/sapi/fpm/tests/tester.inc'; 71FPM\Tester::clean(); 72?> 73