PHP环境变量未定义


PHP Environment Variables Undefined

我在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服务器,它们之间没有任何共享。

  1. 疯狂地通过HTTP和
  2. 包含文件
  3. 很明显为什么它不像你期望的那样工作。

你需要包含文件本地,而不是从URL:

include "resources/addition/test.php";

可能你想把常量定义为文件路径,而不是URL:

define("ENV_LOCATION", ___DIR___);