[php-src] Issue #13249: FPM: php_value and php_admin_value entries are applied in reverse order [.phpt test included]

From: Date: Fri, 26 Jan 2024 08:12:53 +0000
Subject: [php-src] Issue #13249: FPM: php_value and php_admin_value entries are applied in reverse order [.phpt test included]
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-246344@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/13249 Author: dzuelke ### Description The following FPM config: ```ini [global] error_log = {{FILE:LOG}} [unconfined] listen = {{ADDR}} pm = static pm.max_children = 5 php_value[memory_limit]=32M php_value[memory_limit]=24M php_admin_value[date.timezone]=Europe/London php_admin_value[date.timezone]=Europe/Paris ``` Resulted in this php-fpm -tt output: ``` … [26-Jan-2024 07:24:03] NOTICE: php_value[memory_limit] = 24M [26-Jan-2024 07:24:03] NOTICE: php_value[memory_limit] = 32M [26-Jan-2024 07:24:03] NOTICE: php_admin_value[date.timezone] = Europe/Paris [26-Jan-2024 07:24:03] NOTICE: php_admin_value[date.timezone] = Europe/London ``` But I expected this output instead: ``` … [26-Jan-2024 07:24:03] NOTICE: php_value[memory_limit] = 32M [26-Jan-2024 07:24:03] NOTICE: php_value[memory_limit] = 24M [26-Jan-2024 07:24:03] NOTICE: php_admin_value[date.timezone] = Europe/London [26-Jan-2024 07:24:03] NOTICE: php_admin_value[date.timezone] = Europe/Paris ``` --- > [!NOTE] > This is not just cosmetic ordering in php-fpm -tt; the values > are also applied in this order as INI directives, so ini_get() will > return 32M and Europe/London instead > of the expected 24M and > Europe/Paris. --- PHPT: ```php <?php // this is just for GitHub syntax coloring ?> --TEST-- FPM: php_value and php_admin_value entries are applied in reverse order --SKIPIF-- <?php include "skipif.inc"; ?> --FILE-- <?php require_once "tester.inc"; $cfg = <<<EOT [global] error_log = {{FILE:LOG}} [unconfined] listen = {{ADDR}} pm = static pm.max_children = 5 php_value[memory_limit]=32M php_value[memory_limit]=24M php_admin_value[date.timezone]=Europe/London php_admin_value[date.timezone]=Europe/Paris EOT; $code = <<<EOT <?php echo "Test Start\n"; var_dump(ini_get('memory_limit'), ini_get('date.timezone')); echo "Test End\n"; EOT; $tester = new FPM\Tester($cfg, $code); $tester->start(); $tester->expectLogStartNotices(); $tester->request()->expectBody([ 'Test Start', 'string(3) "24M"', 'string(12) "Europe/Paris"', 'Test End' ]); $tester->terminate(); $tester->close(); ?> Done --EXPECT-- Done --CLEAN-- <?php require_once "tester.inc"; FPM\Tester::clean(); ?> ``` Test log: ``` ---- EXPECTED OUTPUT Done ---- ACTUAL OUTPUT >>> Response ----------------- OUT ----------------- X-Powered-By: PHP/8.3.2 Content-type: text/html; charset=UTF-8 Test Start string(3) "32M" string(13) "Europe/London" Test End ----------------- ERR ----------------- --------------------------------------- ERROR: ==> The expected body: Test Start string(3) "24M" string(12) "Europe/Paris" Test End ==> does not match the actual body: Test Start string(3) "32M" string(13) "Europe/London" Test End LOGS: -------------------------------------------------------------------- [26-Jan-2024 08:55:34] NOTICE: fpm is running, pid 62872 [26-Jan-2024 08:55:34] NOTICE: ready to handle connections -------------------------------------------------------------------- Done ---- FAILED ``` ### PHP Version PHP 8.3.2 ### Operating System _No response_

« previous php.bugs (#246344) next »