为什么getenv不在CLI上检查$ _SERVER?

时间:2017-01-27 20:18:49

标签: php command-line-interface

根据the documentation on getenv,我应该可以使用它来检查$_SERVER变量。

<?php
// Example use of getenv()
$ip = getenv('REMOTE_ADDR');

// Or simply use a Superglobal ($_SERVER or $_ENV)
$ip = $_SERVER['REMOTE_ADDR'];

但是,这似乎只适用于从Web服务器(Apache)运行,但不能从命令行运行。在这两种情况下都会正确填充$_SERVER变量,但getenv仅在Web服务器上读取它。

<?php
var_dump(  getenv('SCRIPT_FILENAME'));
var_dump($_SERVER['SCRIPT_FILENAME']);

Apache上的输出到浏览器:

  

/var/www/localhost/questions-answers/scratch.php:7:
  string&#39; /var/www/localhost/questions-answers/scratch.php' (长度= 48)
  /var/www/localhost/questions-answers/scratch.php:8:
  string&#39; /var/www/localhost/questions-answers/scratch.php' (长度= 48)

CLI上的输出:

  

/var/www/localhost/questions-answers/scratch.php:7:
  布尔(假)
  /var/www/localhost/questions-answers/scratch.php:8:
  string(11)&#34; scratch.php&#34;

我觉得在我的php.ini中设置了一些缺少的选项,但我找不到任何关于这种怀疑的参考。这是this question的倒数。

0 个答案:

没有答案