FPM: php_value and php_admin_value entries are applied in reverse order [.phpt test included]
Đang mở
@bukka đang làm issue này rồi.
Từ ngày 26/1/2024.
Bug
SAPI: fpm
- Ngôn ngữ chính
- C
- Star
- 40.4k
- Fork
- 8.2k
- Merge trung bình
- 2 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 96
Mô tả
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
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Đánh giá
Issue này chưa được đánh giá.