getenv(“PHP_SELF”)返回false

时间:2014-03-25 09:15:36

标签: php environment-variables

为什么getenv("PHP_SELF")会返回false

$_SERVER['PHP_SELF']正在运行并返回时。

3 个答案:

答案 0 :(得分:3)

这是因为getenv()不等于$_SERVER取消引用。即:$_SERVER中的{strong>并非所有键都可用于getenv(),而并非所有键都具有相同的名称。

第一个重要区别是getenv()将以不区分大小写的方式进行搜索。例如,这两个调用将返回相同的数据:

$script = getenv('SCRIPT_NAMe');
$script = getenv('SCRIPT_NAME');

其次,关于PHP_SELF:这是将由 environment 设置的密钥。因为这个密钥在环境中有另一个名称(或者说具体而言),它是SCRIPT_NAMEgetenv()将使用预定义键列表,这些键主要列在RFC 3875

因此,如果您想使用getenv(),则应使用SCRIPT_NAME来引用当前脚本名称。请注意,在某些情况下,可以设置此环境密钥 (因此您可以执行getenv('PHP_SELF')) - 但在常见情况下不应依赖于此。

答案 1 :(得分:1)

确定。实际上,问题是getenv()不接受" PHP_SELF"作为一种争论。 或者,您可以使用 -

$ip=getenv('REQUEST_URI');

print_r($ip);

这将为您提供所需的结果。我希望它有所帮助。

答案 2 :(得分:0)

请注意getenv(或$_ENVa slight difference)和$_SERVER可访问的值之间有these are identical

  • $_ENV可直接访问当前流程的环境变量,这些变量来自操作系统。

  • $_SERVER可以访问from the webserver的其他执行信息。

如何填充这些数组取决于PHP的执行方式。主要有apache-module和cgi。在这两种情况下,超全局变量可能会以非常不同的方式填充。

最好在$_SERVER上构建脚本,这些脚本在Web服务器的上下文中运行,因为这通常包含有关PHP的更多信息,这些信息实际上是需要的。如果您开发应该在命令行上运行的php应用程序,您将更有可能希望使用$ _ENV来更好地控制环境。