PHP 中的其他页面无法通过 AJAX 访问环境变量 .env

Environment Variable .env Is Not Accessible On Other Pages in PHP via AJAX

我正在做一个普通的 PHP 项目,其中有一些文件结构如下。

project_folder
--> .env
--> autoload.php
--> index.php
--> Controllers
    --> IndexController.php

现在我的文件包含以下代码。

.env

# App Constants
APP_ENV = localhost
APP_URL = http://localhost/project_folder
APP_DOMAIN = https://localhost/project_folder
APP_DIR = __DIR__

# Database Connection
DATABASE_HOST = localhost
DATABASE_NAME = test
DATABASE_USER = root
DATABASE_PASSWORD = root

autoload.php

$ENV_filepath = '.env';
$lines = file($ENV_filepath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
    if (strpos(trim($line), '#') === 0) {
        continue;
    }
    list($name, $value) = explode('=', $line, 2);
    $name = trim($name);
    $value = trim($value);
    if (!array_key_exists($name, $_SERVER) && !array_key_exists($name, $_ENV)) {
        putenv(sprintf('%s=%s', $name, $value));
        $_ENV[$name] = $value;
        $_SERVER[$name] = $value;
    }
}

index.php

<?php
session_start();
require_once 'autoload.php';
?>
<form onsubmit="return submitted(this)">
    <input type="text" name="UserName" required="" maxlength="200">
    <input type="password" name="UserPassword" required="" maxlength="200">
    <div id="showGeneralAjaxMsg"></div>
    <input type="submit" title="Sign In Now" value="Sign In"/>              
</form> 
<script type="text/javascript">
function submitted(incomingForm) {
    var FD = new FormData(incomingForm);
    FD.append("Function", "Login");
    var ajx = new XMLHttpRequest();
    ajx.onreadystatechange = function () {
        if (ajx.readyState == 4 && ajx.status == 200) {
            document.getElementById("showGeneralAjaxMsg").innerHTML = ajx.responseText;
        }
    };
    ajx.open("POST", "Controllers/IndexController.php", true);
    ajx.send(FD);
    document.getElementById("showGeneralAjaxMsg").innerHTML = "LOADING: Server Is Responding.";
    return false;
}
</script>

IndexController.php

<?php
echo "This Text Is Showing After Submit At index.php Page Only";
print_r($_ENV);
echo getenv('APP_ENV');
?>

但是我返回的是空环境变量。响应结果中没有显示任何内容,我只能看到“此文本在 index.php 页面提交后显示”。

现在我的问题是PHP中环境变量的范围是什么?请记住,我没有使用 OOP 概念。这是简单的编程。另外,我很困惑我是否必须在每个 PHP 页面上加载 autoload.php 文件?如果你的回答是肯定的,那么我在 .env 中设置了一些相关变量,这些变量只能从项目根文件夹中保存,而不能从任何其他级别保存。

等待澄清...

您可以使用会话变量将数据存储在变量中,这些变量可以在系统的不同页面中访问

  1. 假设变量名是 var1,那么只需使用 $_SESSION['var1']
  2. 确保 session_start();使用会话变量
  3. 放置在所有 PHP 脚本的顶部
<?php

session_start();

$_SESSION['var1'] = $var1;


// other statements

?>