go to bug id or search bugs for
From manual page: http://www.php.net/function.parse-ini-file
In Windows environment, putenv does not make environment variables accessible to either of the functions parse_ini_string or parse_ini_file.
Sample on test site 3v4l.org works as expected, but fails in local Windows development environment.
Apache HTTPD 2.4.27
PHP 7.1.7 x64 TS
$str = <<<'EOF'
$ini = parse_ini_string($str);
Add a Patch
Add a Pull Request
Actual results appear on a second Windows-based server running PHP 7.1.6 on Windows 7 Professional SP1 x64.
Expected results appear on Amazon EC2 instance running Amazon Linux AMI release 2017.03 with PHP 7.0.16 and Apache HTTPD 2.4.25.
Thanks for the report. This feature is not documented, why is it expected behavior? Furthermore, it is not thread safe and therefore not portable. I'd tend to say it's a won't fix.
Not documented with parse_ini_file/string, but it's the same parser used for php.ini and support for environment variables is documented there.
It is a handy feature to have in userland. I know I've used it myself.
I think the problem is because of how Apache deals with environment variables - by taking a copy at startup - combined with how PHP's environment variable getting and setting works in Windows. putenv() probably works fine by setting the variable at the process level (SetEnvironmentVariable), but reading it back from the SAPI won't work because Apache is still using the old list it had.
I suspect apache_setenv() instead of putenv() will work, and using $walk_to_top=true sounds like it might address the potential multithreading problem too.
"We didn't write it in the description, so it doesn't happen" could not be any more disingenuous of a response.
Fix and document it, or remove it entirely. Don't think me while saying it's likely to be a wontfix; it's just as disingenuous as the documentation comment.
Thanks to requinix, I'll give that a shot.
@alan at aondra dot com, usage of undocumented features is not a reliable way of development, as for me ;) And you link to the page that doesn't document the feature. Now after @requinix's comment it looks like documented anyway. In further, you also can check bug #71607. If you want to shoot yourself in the foot - yes, use environment variables.
@requinix, it might be useful, but from the security and portability perspective it is quite poor. While we know some PHP software uses it officially, which is even more of disservice, as for me.