mrs*_*row 5 php codeigniter codeigniter-3 phpdotenv
我在codeigniter项目上使用composer从vlucas安装了phpdotenv。
我也添加了钩子,如果v3.3需要,我会感到困惑
$hook['pre_system'] = function() {
$dotenv = new Dotenv\Dotenv(APPPATH);
$dotenv->load();
};
Run Code Online (Sandbox Code Playgroud)
如果不添加此挂钩,则无法从.env文件中检索变量。如果我添加了它,则会出现此错误:
消息:传递给Dotenv \ Dotenv :: __ construct()的参数1必须是Dotenv \ Loader的实例,给定字符串,在第15行的C:\ xampp \ htdocs \ test \ application \ config \ hooks.php中调用
文件名:C:\ xampp \ htdocs \ test \ vendor \ vlucas \ phpdotenv \ src \ Dotenv.php
似乎正在加载该类,但它不喜欢参数“ APPPATH”,但是我发现的所有文档都使用了该类。
任何帮助表示赞赏
mrs*_*row 11
好的,因此更改该挂钩似乎是可行的,但我并不完全确定这是正确的方法,但深入研究库代码似乎还可以。
$hook['pre_system'] = function() {
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
}
Run Code Online (Sandbox Code Playgroud)
如果出于任何原因这是错误的,请告诉我。谢谢
我尝试了所有解决方案然后我发现我的 phpdotenv 版本是 4.xx 对于那些对为什么上述解决方案不起作用感到困惑的人。
这是使用 path 作为构造函数参数加载 env 的新方法:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__.'/..');
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)