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); }</pre> <p>這是DataConfig的定義:</p>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; }</pre> <p>這是我的composer.json檔案:</p>{ 「要求」:{ “vlucas/phpdotenv”:“^5.2”, “空間/非同步”:“^1.5” }, 「自動載入」:{ “類別映射”:[ “/var/local/entrop/model/Contract.php” ] } }</pre> <p>現在,我遇到的錯誤是:</p> <區塊引用> <p>[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 行; </區塊引用> <p>我嘗試的方法是自動載入我的DataConfig文件,並將其包含在回調函數中。但沒有作業。我該怎麼做?</p>
P粉4481302582023-09-04 13:32:01
phpdotenv在錯誤報告方面表現不佳(並且我個人認為它也沒有正確依賴標準和最佳實踐,可能會導致許多副作用,包括你遇到的注意事項- 只是我相當確定他們的作者認為這是一個功能而不是錯誤,因此我不得不承認我不會對他們進行評判,歸根結底,用戶需要自己努力並了解他們在做什麼)。
對於你的特定問題,如果你使用一個庫,請了解如何配置它。甚至我之前的註釋可能會提示你它可能不適合,實際上 - 這就是phpdotenv的亮點 - 它正在做大部分的繁重工作,你可以控制大部分部分 --- 只是不能控製文件格式。
你的問題不是文件格式。所以正確配置你的應用程式以從任何環境中獲取參數並處理錯誤情況(例如,在開始時對意外值進行拋出)。這也應該揭示你在使用這個或那個函式庫時犯了什麼錯誤,並在你的程式碼中解決這個問題。