我在PHP中设置和使用环境变量时遇到了一些麻烦。
我有一个php文件如下
http://localhost/site/include.php<?php
define("ENV_LOCATION", "http://localhost/site/resources/addition");
?>
我包含在下面的文件
http://localhost/site/home.php<html>
<?php
include("include.php");
?>
<body>
<?php
// this bit works
echo ENV_LOCATION;
// this bit works
include(ENV_LOCATION . "/test.php");
?>
</body>
</html>
但是当我在最后一个包含
的文件中尝试使用它时,它似乎失去了环境变量http://localhost/site/resources/addition/test.php<?php
// this fails
echo ENV_LOCATION;
?>
为什么这个文件不能看到环境变量?我得到以下错误
Notice: Use of undefined constant ENV_LOCATION - assumed 'ENV_LOCATION' in /var/www/html/site/resources/addition/test.php on line 3
ENV_LOCATION
define
未定义环境变量。它定义了constant
,常量变量应该在当前范围内可用。例如,它说文件失败,其中定义的常量不包括。
顺便说一句,对于环境变量php有putenv
函数。参考http://php.net/manual/en/function.putenv.php
你在做的是:
include "http://localhost/site/resources/addition/test.php";
包括HTTP上的文件。这意味着将向您的服务器发出一个新的HTTP请求(您的服务器向自己发出请求),并且该新请求将不具有来自其他请求的任何上下文。这就像任何其他独立的HTTP请求进入你的web服务器,它们之间没有任何共享。
- 疯狂地通过HTTP和 包含文件
- 很明显为什么它不像你期望的那样工作。
你需要包含文件本地,而不是从URL:
include "resources/addition/test.php";
可能你想把常量定义为文件路径,而不是URL:
define("ENV_LOCATION", ___DIR___);