Php 环境未传递给proc_open打开的进程

Php 环境未传递给proc_open打开的进程,php,process,proc-open,Php,Process,Proc Open,将环境变量传递给使用proc_open打开的进程时遇到问题。 我在上找到了以下示例 该示例应该像文档中所说的那样响应env数组。但是在我的机器(PHP5.4.6-1ubuntu1.4(cli))上,回显数组是空的。是否有一些Suhosin或php.ini限制禁止将env var传递给进程?我不知道。如果$\u ENV为空,您应该查看ini设置并确保该值包含E 但是,您可以使用$\u服务器: fwrite($pipes[0], '<?php print_r($_SERVER); ?>

将环境变量传递给使用proc_open打开的进程时遇到问题。 我在上找到了以下示例



该示例应该像文档中所说的那样响应env数组。但是在我的机器(PHP5.4.6-1ubuntu1.4(cli))上,回显数组是空的。是否有一些Suhosin或php.ini限制禁止将env var传递给进程?我不知道。

如果
$\u ENV
为空,您应该查看ini设置并确保该值包含
E

但是,您可以使用
$\u服务器

fwrite($pipes[0], '<?php print_r($_SERVER); ?>');
fwrite($pipes[0],“”);
它也将包含环境变量,应该在服务器的
99.999%
处启用(我猜)

设置

variables_order = "EGPCS"

在php.ini中,您是通过Apache模块使用php,还是通过CGI、FastCGI、php-FPM。。。等等读这篇文章,如果你的ENV是在INI中启用的,那么在你的问题中包括小天狼星问的信息。事实上,我的变量顺序是“GPCS”。但添加E不起作用。因为,如果我正确阅读文档,您必须将register_globals设置为on。一些消息来源不建议这样做。$\u服务器是唯一适合我的解决方案:)正如我在对drull的回复中所说,变量中的“E”顺序只能与allow globals组合使用。但那将是通往(安全)地狱的大门:)。。。如果你一旦发现问题的原因,如果你能在这里添加这些信息就好了哦,是的,你是对的。我将变量的顺序保留为“GPCS”,但我使用$系统来检索变量,而不是$ENV。这对我来说很好。好的,应该可以(除非您使用的环境变量名已经是
$\u服务器的一部分)
variables_order = "EGPCS"