Bug #79254 [PATCH]: CLI: getenv() w/o arguments not showing changes

From: Date: Tue, 11 Feb 2020 08:59:32 +0000
Subject: Bug #79254 [PATCH]: CLI: getenv() w/o arguments not showing changes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-225486@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79254&edit=1 ID: 79254 Patch added by: cmb@php.net Reported by: franz dot zieris at gmail dot com Summary: CLI: getenv() w/o arguments not showing changes Status: Verified Type: Bug Package: PHP options/info functions Operating System: Windows ZTS PHP Version: 7.4.2 Block user comment: N Private report: N New Comment: The following pull request has been associated: Patch Name: Fix #79254: getenv() w/o arguments not showing changes On GitHub: https://github.com/php/php-src/pull/5167 Patch: https://github.com/php/php-src/pull/5167.patch Previous Comments: ------------------------------------------------------------------------ [2020-02-10 16:05:06] cmb@php.net Confirmed for ZTS builds. The problem is that ZTS builds use only SetEnvironmentVariable(), but not putenv() (because the latter is not thread-safe), but read the enviroment using environ, which only would reflect putenv() changes. ------------------------------------------------------------------------ [2020-02-10 14:35:22] franz dot zieris at gmail dot com Description: ------------ Calling getenv() without an argument does not reflect change made with putenv, but calling getenv() on a concrete variable *does*. The test script below produces the expected output on a Linux machine, but on my Windows machine the array difference is "array(0) { }". I'm using the out-of-the box configuration of php.ini-development. These are the first lines of php -i System => Windows NT MYPC 10.0 build 18363 (Windows 10) AMD64 Build Date => Jan 21 2020 17:46:05 Compiler => Visual C++ 2017 Architecture => x64 Configure Command => cscript /nologo configure.js "--enable-snapshot-build" "--enable-debug-pack" "--with-pdo-oci=c:\php-snap-build\deps_aux\oracle\x64\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-snap-build\deps_aux\oracle\x64\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--without-analyzer" "--with-pgo" Server API => Command Line Interface Virtual Directory Support => enabled Configuration File (php.ini) Path => C:\WINDOWS Loaded Configuration File => C:\xampp\php\php.ini Scan this dir for additional .ini files => (none) Additional .ini files parsed => (none) PHP API => 20190902 PHP Extension => 20190902 Zend Extension => 320190902 Zend Extension Build => API320190902,TS,VC15 PHP Extension Build => API20190902,TS,VC15 Debug Build => no Thread Safety => enabled Thread API => Windows Threads Zend Signal Handling => disabled Zend Memory Manager => enabled Zend Multibyte Support => disabled IPv6 Support => enabled DTrace Support => disabled Test script: --------------- <?php $old = getenv(); var_dump(getenv("FOO", true)); // expected: bool(false) putenv("FOO=BAR"); $new = getenv(); var_dump(array_diff($new, $old)); // expected: array(1){["FOO"]=>string(3) "BAR"} var_dump(getenv("FOO", true)); // expected: string(3) "BAR" ?> Expected result: ---------------- bool(false) array(1) { ["FOO"]=> string(3) "BAR" } string(3) "BAR" Actual result: -------------- bool(false) array(0) { } string(3) "BAR" ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=79254&edit=1

« previous php.bugs (#225486) next »