根据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的倒数。