提问人:Samg381 提问时间:11/5/2023 最后编辑:Samg381 更新时间:11/5/2023 访问量:50
PHP 不会回显环境变量,尽管它们出现在 var_dump 中
PHP won't echo environment variables despite them appearing in var_dump
问:
我有一个运行 Apache2(虚拟主机)+ PHP 8.2 的 Debian 12 服务器。
我正在努力让PHP读取环境变量,并且正在使用以下代码进行测试:
<?php
$scriptUrl = $_ENV['SCRIPT_NAME'];
echo "$scriptUrl";
?>
奇怪的是,页面上没有打印任何内容。
我已经尝试过其他几个环境变量,例如.我也尝试使用该功能无济于事。SCRIPT_URL
getenv('SCRIPT_URL')
我运行了它返回了大量变量,包括哪些是正确的,但是我尝试的PHP似乎无法访问任何变量。var_dump($_SERVER);
SCRIPT_NAME
我想这与我的Apache/虚拟主机/PHP配置有关。
答:
1赞
volkerschulz
11/5/2023
#1
为什么希望被设置为环境变量?你通常会发现,在超全局中,而不是在 . 应该给你预期的结果。
SCRIPT_NAME
$_SERVER
$_ENV
$scriptUrl = $_SERVER['SCRIPT_NAME'];
并非所有环境变量都必须填充到超全局变量中。 与 相比,可能会显示不同(或无)结果。有关详细信息,请参阅变量顺序。
var_dump($_ENV)
var_dump(getenv());
要查看可用内容,请尝试:
var_dump($_ENV);
var_dump(getenv());
var_dump($_SERVER);
评论
1赞
Samg381
11/5/2023
谢谢。敏锐,完全躲避了我。关于这方面的文档似乎相当稀少。此外,是什么原因导致两台服务器具有不同的 (_server) 环境变量,我无法理解。$_SERVER
$_ENV
1赞
Álvaro González
11/5/2023
@Samg381 环境变量没有什么特别之处,任何脚本或用户都可以创建它们。两个不同的服务器具有相同的确切变量,这将是一个值得注意的事件。
0赞
Samg381
11/6/2023
谢谢!我如何判断哪个脚本创建了一个环境变量,例如?据推测,该脚本必须与每个 HTTP 请求一起运行,因为它已更新以显示当前 URL,不是吗?SCRIPT_NAME
评论
expose_php