我正在使用两个库:
这是我正在执行的内容:
add(function () use ($aConn, $contract) { include_once '/var/local/entrop/config/DataConfig.php'; $next_contract = Contract::getNextContract($aConn); }) ->然后(函数($输出){ }) ->catch(函数($异常){ 函数::write_log($异常); }) -> 超时(函数(){ 函数::write_log(“超时”); }); } 等待($池); $aConn->close(); } 捕获(异常$e){ 函数::write_log($e); }
这是DataConfig的定义:
load(); 定义('DB_HOST', $_ENV['DB_HOST']); 定义('DB_USER', $_ENV['DB_USER']); 定义('DB_PASS', $_ENV['DB_PASS']); 定义('DB_DBMS', $_ENV['DB_DBMS']); 类数据配置{ 静态$db_host = DB_HOST; 静态$db_user = DB_USER; 静态$db_pass = DB_PASS; 静态$db_dbms = DB_DBMS; }
这是我的composer.json文件:
{ “要求”:{ “vlucas/phpdotenv”:“^5.2”, “空间/异步”:“^1.5” }, “自动加载”:{ “类映射”:[ “/var/local/entrop/model/Contract.php” ] } }
现在,我遇到的错误是:
[2022-08-04 10:38:38]local.INFO:空间\异步\输出\并行错误: PHP 注意:未定义索引:DB_HOST in /var/local/entropia/config/DataConfigEntropia.php 第 12 行 PHP 注意:未定义索引:DB_USER in /var/local/entropia/config/DataConfigEntropia.php 第 13 行 PHP 注意:未定义索引:DB_PASS in /var/local/entropia/config/DataConfigEntropia.php 第 14 行 PHP 注意:未定义索引:DB_DBMS in /var/local/entropia/config/DataConfigEntropia.php 第 15 行
我尝试的方法是自动加载我的DataConfig文件,并将其包含在回调函数中。但没有起作用。我应该怎么做?
phpdotenv在错误报告方面表现不佳(并且我个人认为它也没有正确依赖标准和最佳实践,可能会导致许多副作用,包括你遇到的注意事项 - 只是我相当确定他们的作者认为这是一个功能而不是错误,因此我不得不承认我不会对他们进行评判,归根结底,用户需要自己努力并了解他们在做什么)。
对于你的特定问题,如果你使用一个库,请了解如何配置它。甚至我之前的注释可能会提示你它可能不适合,实际上 - 这就是phpdotenv的亮点 - 它正在做大部分的繁重工作,你可以控制大部分部分 --- 只是不能控制文件格式。
你的问题不是文件格式。所以正确配置你的应用程序以从任何环境中获取参数并处理错误情况(例如,在开始时对意外值进行抛出)。这也应该揭示出你在使用这个或那个库时犯了什么错误,并在你的代码中解决这个问题。