Edit report at https://bugs.php.net/bug.php?id=60981&edit=1
ID: 60981
Patch added by: tyrael@php.net
Reported by: david at davidfavor dot com
Summary: Shell environment inaccessible in tests
Status: Assigned
Type: Bug
Package: Testing related
Operating System: Ubuntu 11.10
PHP Version: 5.3.10
Assigned To: danielc
Block user comment: N
Private report: N
New Comment:
The following patch has been added/updated:
Patch Name: run-tests.php.diff
Revision: 1328630230
URL: https://bugs.php.net/patch-display.php?bug=60981&patch=run-tests.php.diff&revision=1328630230
Previous Comments:
------------------------------------------------------------------------
[2012-02-07 15:55:42] tyrael@php.net
"--d variable_orders=EGPCS to run-tests"
if you mean adding that to Makefile.global (the Makefile template, which will
run run-tests.php when you execute make test) then yeah, it is an elegant
solution, but I think it would be better to fix run-tests.php itself, so for
those who call it directly (half of the core/qa people...) will also be fixed.
Pierre told me that there is no clean way to fetch all environment vars from a
php script if $_ENV isn't populated (you could parse it from the output of
phpinfo() but that would be error-prone and messy).
So I would propose calling another php instance and fetching the environment
variables from there using shell_exec.
See the attached patch.
(If somebody has a better idea, I'm all for it.)
------------------------------------------------------------------------
[2012-02-07 15:20:06] david at davidfavor dot com
Seems like adding --d variable_orders=EGPCS to run-tests is the most elegant.
What the next step to arrange for this bug to be fixed?
Also I notice there are 4 failures in the mysqli tests. Let me know how to
register as a developer with php.net and I'll figure these out and supply
patches to fix the test suite.
Thanks.
------------------------------------------------------------------------
[2012-02-07 15:03:35] tyrael@php.net
'Both php.ini-production and php.ini-development contain "GPCS".'
the default value means that what is the value if you don't set it any way (having
no php.ini or using php -n for example)
unfortunately the default values and our developer/production inis aren't in sync,
I brought that issue up on the mailing list in the past:
http://www.mail-archive.com/internals@lists.php.net/msg52262.html
------------------------------------------------------------------------
[2012-02-07 14:59:11] jpauli@php.net
I confirm that getenv() works regardless any .ini config.
It proxies to SAPI/system getenv()
------------------------------------------------------------------------
[2012-02-07 14:30:43] tyrael@php.net
the problem is that the run-tests.php fetches the environment variables from $_ENV
http://svn.php.net/viewvc/php/php-src/trunk/run-tests.php?view=markup#l134
then passes the environment variables to the system_with_timeout call (which will
proc_open using those environment variables).
so there is no documentation issue, only run-tests.php needs a change to either
force the variable_orders to contain E(we could pass the --d variable_orders=EGPCS
in the run-tests.php call in http://svn.php.net/viewvc/php/php-
src/trunk/Makefile.global) or changing run-tests.php to not use the $_ENV array
for fetching all the environment vars.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=60981--
Edit this bug report at https://bugs.php.net/bug.php?id=60981&edit=1