apache getenv(ENVIRONMENT VARIABLE)没有得到任何值

r7s23pms  于 2023-08-07  发布在  Apache
关注(0)|答案(3)|浏览(153)

在将我的项目上传到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服务器。

li9yvcax

li9yvcax1#

正如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();
}

字符串

e4eetjau

e4eetjau2#

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

SetEnv API_KEY=MY_API_KEY

字符串
这个方法本来应该可以工作的,只是你用错了语法。键/值对之间不应该有=。参数应以 * 空格 * 分隔。上面的代码设置了一个名为API_KEY=MY_API_KEY的环境变量(而不是API_KEY),并分配了一个空字符串!
它应该是:

SetEnv API_KEY MY_API_KEY


修改httpd.conf后,需要重新启动Apache。
或者,将指令添加到文档根目录中的.htaccess文件中。(或相关子目录。)

参考号:

  • https://httpd.apache.org/docs/2.4/mod/mod_env.html#setenv
w8rqjzmb

w8rqjzmb3#

我遇到了同样的问题,直到我发现我没有自动加载库。对于那些使用CodeIgniter 2/3的用户,你必须在根目录index.php下添加以下代码:

/*
 * --------------------------------------------------------------------
 * LOAD PHP DOT ENV FILE
 * --------------------------------------------------------------------
 */
require_once BASEPATH . 'dotenv/autoloader.php'; // Edit this line

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

字符串
您需要获取https://github.com/agungjk/phpdotenv-for-codeigniter/tree/master/system/dotenv上的文件,并将dotenv文件夹放置在指定路径的任何位置。在本例中,它将位于/system/dotenv/中。

相关问题