Bug #79051 [Asn->Fbk]: putenv variables not accessible to dependent functions in Windows CLI
| From: | cmb@php.net | Date: | Thu, 02 Jan 2020 10:51:11 +0000 |
| Subject: | Bug #79051 [Asn->Fbk]: putenv variables not accessible to dependent functions in Windows CLI | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-224659@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=79051&edit=1
ID: 79051
Updated by: cmb@php.net
Reported by: danielklein at airpost dot net
Summary: putenv variables not accessible to dependent
functions in Windows CLI
-Status: Assigned
+Status: Feedback
Type: Bug
Package: PHP options/info functions
Operating System: Windows 10
PHP Version: 7.3.13
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
Yes, I tested on Windows (PHP 7.3.13 x64 NTS and ZTS).
Obviously, in your case putenv() signals success, and getenv()
returns what it is supposed to.
Could you please try with PHP 7.3.13 and Xdebug disabled?
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2020-01-02 10:32:24] danielklein at airpost dot net
The first var_dump(getenv('all_proxy')); returns bool(false).
var_dump(putenv('all_proxy=localhost:5678')); returns bool(true).
The second var_dump(getenv('all_proxy')); returns string(14) "localhost:5678".
It's the thread safe build:
PHP 7.3.9 (cli) (built: Aug 28 2019 09:28:48) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.9, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
Just to confirm, you did run this on Windows? The bug is not present on Ubuntu, and I assume other
Linux varieties.
------------------------------------------------------------------------
[2020-01-01 12:39:00] cmb@php.net
I cannot reproduce the reported behavior. What do the putenv()
and getenv() calls return (use var_dump instead of echo or
ignoring the return value)? Also, are you using NTS or ZTS
builds?
------------------------------------------------------------------------
[2020-01-01 02:28:36] danielklein at airpost dot net
"Edit" won't let me edit the bug report.
Actual result:
========== first run without proxy
<html>
<head></head>
<body>.</body>
</html>
========== second run with proxy override
localhost:5678
<html>
<head></head>
<body>.</body>
</html>
------------------------------------------------------------------------
[2020-01-01 02:24:52] danielklein at airpost dot net
Description:
------------
In Windows CLI, setting an environment with
putenv(), such as "all_proxy"
which is supposed to affect cURL, has no effect on later function calls.
The test script works as expected on Ubuntu CLI, but not Windows CLI.
Test script:
---------------
<?php
function search() {
$url = 'x3m.dev';
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
]);
$data = curl_exec($curl);
if (!$data) {
throw new Exception('An error occurred while trying to process the request.');
}
return $data;
}
function do_curl_request() {
echo getenv("all_proxy") . "\n\n";
try {
echo search();
}
catch (Exception $e) {
echo $e->getMessage();
}
echo "\n\n";
}
echo "========== first run without proxy\n";
do_curl_request();
putenv("all_proxy=localhost:5678");
echo "========== second run with proxy override\n";
do_curl_request();
Expected result:
----------------
========== first run without proxy
<html>
<head></head>
<body>.</body>
</html>
========== second run with proxy override
localhost:5678
An error occurred while trying to process the request.
Actual result:
--------------
========== first run without proxy
<html>
<head></head>
<body>.</body>
</html>
========== second run with proxy override
localhost:5678
An error occurred while trying to process the request.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79051&edit=1