我正在使用两个库:
- phpdotenv
- spatie/async
这就是我正在执行的:
<?php
require_once "/var/local/entrop/vendor/autoload.php";
include_once '/var/local/entrop/inc/Functions.php';
include_once '/var/local/entrop/model/Contract.php';
use SpatieAsyncPool;
try {
$aConn = Functions::getConnection();
$contracts = Contract::getContracts();
$pool = Pool::create();
foreach ($contracts as $contract){
$pool->add(function () use ($aConn, $contract) {
include_once '/var/local/entrop/config/DataConfig.php';
$next_contract = Contract::getNextContract($aConn);
})
->then(function ($output) {
})
->catch(function ($exception) {
Functions::write_log($exception);
})
->timeout(function () {
Functions::write_log("timeout");
});
}
await($pool);
$aConn->close();
}
catch (Exception $e){
Functions::write_log($e);
}
这是DataConfig的定义:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once "/var/local/entrop/vendor/autoload.php";
$dotenv = DotenvDotenv::createImmutable("/var/local/entrop/");
$dotenv->load();
define('DB_HOST', $_ENV['DB_HOST']);
define('DB_USER', $_ENV['DB_USER']);
define('DB_PASS', $_ENV['DB_PASS']);
define('DB_DBMS', $_ENV['DB_DBMS']);
class DataConfig {
static $db_host = DB_HOST;
static $db_user = DB_USER;
static $db_pass = DB_PASS;
static $db_dbms = DB_DBMS;
}
这是我的composer.json文件:
{
"require": {
"vlucas/phpdotenv": "^5.2",
"spatie/async": "^1.5"
},
"autoload": {
"classmap": [
"/var/local/entrop/model/Contract.php"
]
}
}
现在,我得到的错误是:
[2022-08-04 10:38:38]本地。信息:空间\异步\输出\并行错误:PHP注意:未定义的索引:中的DB_HOST/第12行php上的var/local/entopia/config/DataConfigEntropia.php注意:中的未定义索引:DB_USER/第13行php上的var/local/entopia/config/DataConfigEntropia.php注意:未定义的索引:中的DB_PASS/第14行php上的var/local/entopia/config/DataConfigEntropia.php注意:未定义的索引:中的DB_DBMS/第15行上的var/local/entropia/config/DataConfigEntropia.php
到目前为止,我尝试的是自动加载我的Dataconfig文件,并将其包含在回调函数中。它不起作用。我能做什么?
对于您的特定问题,如果您使用库,请了解如何配置它。即使我之前的注释可能会向您发出信号,表明它可能不合适,但它实际上——这就是phpdotenv的亮点——正在做大量繁重的工作,您可以控制它的大部分内容——只是不能控制文件格式。
你的问题不在于文件格式。因此,请正确配置您的应用程序,以使用任何环境中的参数并处理错误情况(例如,一开始就抛出意外值(。这也应该揭示您在使用这个或那个库开始时出错的地方,然后在代码中解决问题。