【问题标题】:Get environment variable in PHP script在 PHP 脚本中获取环境变量
【发布时间】:2013-08-25 06:08:19
【问题描述】:

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

<VirtualHost *:80>

  ....

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

  ....

</VirtualHost>

然而,虽然 toPhp 变量现在在此虚拟主机所针对的站点中可用,但在 error.php 中缺少它。假设它的值是动态的,我如何访问这个环境变量?

【问题讨论】:

  • 所以echo $_SERVER["toPhp"] 没有显示任何内容?你的error.php是什么样的?
  • $stdin = fopen ('php://stdin', 'r'); ob_implicit_flush (true); var_dump(phpinfo()); ,很好地 var_dumps phpinfo(),但未设置 toPhp 值。
  • phpinfo() 输出中是否有可用的服务器变量?还是通过 vhost 配置中的 ErrorLog 条目从命令行有效地调用 PHP?即使那样,如果我手动执行 export toPhp=hello 后跟 php /srv/site/phpinfo.php | grep toPhp,我仍然看到 toPhp 设置在 $_SERVER
  • 是的,这些已设置:APACHE_PID_FILE、APACHE_RUN_USER、PATH、_、PWD、LANG、APACHE_RUN_GROUP、SHLVL、PHP_SELF、SCRIPT_NAME、SCRIPT_FILENAME、PATH_TRANSLATED、DOCUMENT_ROOT、REQUEST_TIME、argv、argc。我希望找到一种方法来传递环境的价值。变量并从 argv 读取它,但将变量放入 ErrorLog 指令将其作为字符串传递,而不是变量值。
  • 您是否尝试将值放入您的 apache config envvars 文件中?

标签: php apache environment-variables virtualhost


【解决方案1】:

从我设置的虚拟主机:

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

然后我从这个虚拟主机中的 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'));

像魅力一样工作。

【讨论】:

  • 问题是:调用的php脚本没有像在虚拟主机中那样处理。
猜你喜欢
  • 2019-12-12
  • 2017-02-22
  • 1970-01-01
  • 2018-09-16
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
相关资源
最近更新 更多