PHP环境变量未定义

时间:2016-11-08 09:27:51

标签: php environment-variables

我在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

2 个答案:

答案 0 :(得分:2)

您正在做的是:

include "http://localhost/site/resources/addition/test.php";

这包括 over HTTP 文件。这意味着将向您的服务器发出新的HTTP请求(您的服务器向其自身发出请求),并且该新请求不会具有来自其他请求的任何上下文。它就像进入您的Web服务器的任何其他独立HTTP请求一样,它们之间没有任何共享。

它的

  1. 疯狂地通过HTTP和
  2. 包含文件
  3. 希望明白为什么它没有像你期望的那样工作。
  4. 您需要包含本地文件,而不是来自网址

    include "resources/addition/test.php";
    

    您可能希望将常量定义为文件路径,而不是URL:

    define("ENV_LOCATION", ___DIR___);
    

答案 1 :(得分:1)

define没有定义环境变量。它定义constant,并且常量变量应该在当前范围内可用。例如,如果说未通过定义的文件失败,那么。

顺便说一下,对于环境变量php有putenv函数。参考http://php.net/manual/en/function.putenv.php