在PHP脚本中获取环境变量

在PHP脚本中获取环境变量,php,apache,environment-variables,virtualhost,Php,Apache,Environment Variables,Virtualhost,在我的Apache(2.2)virtualHost配置中,我希望通过管道将错误日志传输到其他地方 <VirtualHost *:80> .... SetEnv toPhp hello ErrorLog "|php /var/www/error.php >>/var/www/logs/vialora.log" .... </VirtualHost> .... SetEnv toPhp你好 ErrorLog“| php/var/ww

在我的Apache(2.2)virtualHost配置中,我希望通过管道将错误日志传输到其他地方

<VirtualHost *:80>

  ....

   SetEnv toPhp hello
   ErrorLog "|php /var/www/error.php >>/var/www/logs/vialora.log"

  ....

</VirtualHost>

....
SetEnv toPhp你好
ErrorLog“| php/var/www/error.php>>/var/www/logs/vialora.log”
....

但是,虽然此虚拟主机的站点中现在提供了
toPhp
变量,但
error.php
中缺少该变量。假设此环境变量的值是动态的,如何访问它?

从我设置的虚拟主机:

<VirtualHost *:80>
...
SetEnv APPLICATION_ENV development
...
</VirtualHost>

像个魔术师一样工作。

那么
echo$\u服务器[“toPhp”]
什么都不显示?你的error.php是什么样子的?
$stdin=fopen('php://stdin","r",;ob_隐式_刷新(真);变量转储(phpinfo()),该变量转储phpinfo(),但未设置toPhp值。phpinfo()输出中是否有可用的服务器变量?还是通过vhost配置中的in ErrorLog条目从命令行有效地调用PHP?即使这样,如果我做一个手动的导出toPhp=hello
,然后是一个
php/srv/site/phpinfo.php | grep-toPhp
,我仍然会看到toPhp是在$\u服务器中设置的是,这些设置是:APACHE\u-PID\u文件,APACHE\u-RUN\u用户,路径,PWD,LANG,APACHE\u-RUN组,SHLVL,php\u-SELF,SCRIPT\u-NAME,SCRIPT\u-FILENAME,PATH\u-TRANSLATED,DOCUMENT\u-ROOT,请求时间,argv,argc。我希望找到一种方法来传递env的价值。变量并从argv读取,但将变量放入ErrorLog指令会将其作为字符串传递,而不是变量值。是否尝试将该值放入apache config envvars文件中?问题是:调用的php脚本的处理方式与虚拟主机中的不同。
// Display errors (just in case)
ini_set("display_errors", E_ALL | E_STRICT);

// Define application environment
defined('APPLICATION_ENV') ||
        define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));