我有一个运行 Apache2(虚拟主机)+ PHP 8.2 的 Debian 12 服务器。
我正在努力让 PHP 读取环境变量,并正在使用此代码进行测试:
<?php
$scriptUrl = $_ENV['SCRIPT_NAME'];
echo "$scriptUrl";
?>
奇怪的是,页面上没有打印任何内容。
我已经尝试过使用其他几个环境变量,例如
SCRIPT_URL
。我也尝试过使用getenv('SCRIPT_URL')
功能,但没有成功。
我运行了
var_dump($_SERVER);
,它返回了大量变量,包括 SCRIPT_NAME
,这是正确的,但是我尝试的 PHP 似乎无法访问任何变量。
我想这与我的 Apache / 虚拟主机 / PHP 配置有关。
为什么期望将
SCRIPT_NAME
设置为环境变量?您通常会在 $_SERVER
超全局中发现这一点,而不是在 $_ENV
中。 $scriptUrl = $_SERVER['SCRIPT_NAME'];
应该会给你预期的结果。
并非所有环境变量都必须填充到超全局变量中。与
var_dump($_ENV)
相比,var_dump(getenv());
可能会显示不同(或没有)结果。有关详细信息,请参阅变量顺序。
要查看可用的内容,请尝试:
var_dump($_ENV);
var_dump(getenv());
var_dump($_SERVER);