首页 > 解决方案 > getenv(ENVIRONMENT VARIABLE) 一无所获

问题描述

在将我的项目上传到 Github 之前,我想使用环境变量隐藏我的 API 密钥。

我在 .env 文件中添加了这行代码

API_KEY=MY_API_KEY

但是当我在我的 PHP 文件中调用 API_KEY 时,

$apiKey=getenv('API_KEY');
print_r($apiKey);

它什么也没显示。我的网站崩溃了,因为代码没有获得 API 密钥。

我尝试在httpd.conf文件底部使用 SetEnv。

SetEnv API_KEY=MY_API_KEY

但这仍然行不通。print_r()什么都不打印。什么都没有……我做错了什么?

该文件是否应该.env与 PHP 文件位于同一位置?我正在使用 Windows,Xampp Apache 是我的 Web 服务器。

标签: phpapacheenvironment-variables

解决方案


正如 IMSoP 在评论中提到的,我不得不做一些事情来强制 PHP 读取我的 .env 文件,我通过安装 phpdotenv 解决了这个问题。 https://github.com/vlucas/phpdotenv 这个包可以用来读取 .env 文件。

if(file_exists(dirname(__DIR__) . '/vendor/autoload.php')) {
    require_once dirname(__DIR__) . '/vendor/autoload.php';
    $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
    $dotenv->load();
}

推荐阅读