PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-环境变量在Phalcon Config中不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个添加了该库的Phalcon项目:https://github.com/vlucas/phpdotenv.该库用于从.env文件中加载一些环境变量.我创建了这样的文件并将其放入我的项目中.

VERSION_numbER=3.14 

DATABASE_HOST=localhost
DATABASE_NAME=test
DATABASE_USER=root
DATABASE_PASS=root

我将loader.PHP文件重写为以下代码

<?PHP
$loader = new \Phalcon\Loader();

/**
 * We're a registering a set of directories taken from the configuration file
 */
$loader->registerNamespaces(array(
    'Test\Models' => $config->application->modelsDir,
    'Test\Controllers' => $config->application->controllersDir,
    'Test\Forms' => $config->application->formsDir,
    'Test\Classes' => $config->application->classesDir,
    'Test\Classes\Excel' => $config->application->excelDir,
    'Test' => $config->application->libraryDir
));

$loader->register();

// Use composer autoloader to load vendor classes
require_once __DIR__ . '/../../vendor/autoload.PHP';

$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->required(['DATABASE_HOST', 'DATABASE_NAME', 'DATABASE_USER', 'DATABASE_PASS']);
$dotenv->overload();

在我的配置文件中,我用环境变量替换了键:

'database' => array(
    'adapter'  => 'MysqL',
    'host'     => getenv('DATABASE_HOST'),
    'username' => getenv('DATABASE_USER'),
    'password' => getenv('DATABASE_PASS'),
    'dbname'   => getenv('DATABASE_NAME')
),

我可以在需要的地方回显getenv(‘VERSION_numbER’),并且每次都可以使用,但是当我尝试使用此配置文件时,变量为空.我究竟做错了什么?

解决方法:

从您提供的源代码摘录来看,没有理由不起作用.我只能做一些假设,但是由于我目前正在开发一个也使用Dotenv的项目,所以我想指出两种可能性.

首先,我不确定为什么要使用重载()方法.这样在您的public / index.PHP中加载Dotenv就足够了:

define('APP_PATH', realpath('..'));
include APP_PATH . '/vendor/autoload.PHP';

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

这将我带到您的问题的第二个最可能的原因:

您正在loader.PHP文件中加载Dotenv.在大多数Phalcon示例项目中,该配置是在配置后加载的,因此此时尚未设置Env变量.包括我在index.PHP中提到的代码,您应该会很好.

大佬总结

以上是大佬教程为你收集整理的php-环境变量在Phalcon Config中不起作用全部内容,希望文章能够帮你解决php-环境变量在Phalcon Config中不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: