我在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
答案 0 :(得分:2)
您正在做的是:
include "http://localhost/site/resources/addition/test.php";
这包括 over HTTP 文件。这意味着将向您的服务器发出新的HTTP请求(您的服务器向其自身发出请求),并且该新请求不会具有来自其他请求的任何上下文。它就像进入您的Web服务器的任何其他独立HTTP请求一样,它们之间没有任何共享。
它的
您需要包含本地文件,而不是来自网址
include "resources/addition/test.php";
您可能希望将常量定义为文件路径,而不是URL:
define("ENV_LOCATION", ___DIR___);
答案 1 :(得分:1)
define
没有定义环境变量。它定义constant
,并且常量变量应该在当前范围内可用。例如,如果说未通过定义的文件失败,那么。
顺便说一下,对于环境变量php有putenv
函数。参考http://php.net/manual/en/function.putenv.php