FPM: php_value and php_admin_value entries are applied in reverse order [.phpt test included]
オープン
@bukka がすでに取り組んでいます。
2024年1月26日 から。
Bug
SAPI: fpm
- 主要言語
- C
- スター
- 40.4k
- フォーク
- 8.2k
- 平均マージ
- 2日 13時間
- マージ済み PR(30日)
- 96
説明
Description
The following FPM config:
[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 inphp-fpm -tt; the values are also applied in this order as INI directives, soini_get()will return32MandEurope/Londoninstead of the expected24MandEurope/Paris.
PHPT:
<?php // this is just for GitHub syntax coloring ?>
--TEST--
FPM: GH-13249 - 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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
評価
この issue はまだ評価されていません。