Apprenez à importer correctement les bibliothèques PHP
P粉214089349
P粉214089349 2023-09-03 17:07:32
0
1
442
<p>我正在使用两个库:</p> <ul> <li>phpdotenv</li> <li>spatie/async</li> </ul> <p>这是我正在执行的内容:</p> <pre class="brush:php;toolbar:false;"><?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'; utilisez SpatieAsyncPool ; essayer { $aConn = Fonctions :: getConnection (); $contrats = Contrat :: getContracts (); $pool = Pool::create(); foreach ($contrats en tant que $contrat){ $pool->add(function () use ($aConn, $contract) { include_once '/var/local/entrop/config/DataConfig.php'; $next_contract = Contract::getNextContract($aConn); }) ->puis(fonction ($sortie) { }) ->catch(fonction ($exception) { Fonctions ::write_log($exception); }) ->timeout(fonction () { Functions::write_log("timeout"); }); } attendre($pool); $aConn->fermer(); } attraper (Exception $e){ Fonctions ::write_log($e); }</pré> <p>这是DataConfig的定义:</p> <pre class="brush:php;toolbar:false;"><?php ini_set('display_errors',1); rapport d'erreur (E_ALL); require_once "/var/local/entrop/vendor/autoload.php"; $dotenv = DotenvDotenv::createImmutable("/var/local/entrop/"); $dotenv->load(); définir('DB_HOST', $_ENV['DB_HOST']); définir('DB_USER', $_ENV['DB_USER']); définir('DB_PASS', $_ENV['DB_PASS']); définir('DB_DBMS', $_ENV['DB_DBMS']); classe DataConfig { statique $db_host = DB_HOST ; statique $db_user = DB_USER ; statique $db_pass = DB_PASS ; statique $db_dbms = DB_DBMS ; }</pré> <p>这是我的composer.json文件:</p> <pre class="brush:php;toolbar:false;">{ "exiger" : { "vlucas/phpdotenv": "^5.2", "spatie/async": "^1,5" }, "chargement automatique": { "carte de classe": [ "/var/local/entrop/model/Contract.php" ] } }≪/pré> <p>Maintenant, l'erreur que j'obtiens est : </p> <blockquote> <p>[2022-08-04 10:38:38]local.INFO : Erreur parallèle de sortie asynchrone spatiale : Remarque PHP : index non défini : DB_HOST dans /var/local/entropia/config/DataConfigEntropia.php ligne 12 PHP REMARQUE : index non défini : DB_USER dans /var/local/entropia/config/DataConfigEntropia.php ligne 13 PHP REMARQUE : index non défini : DB_PASS dans /var/local/entropia/config/DataConfigEntropia.php ligne 14 PHP REMARQUE : index non défini : DB_DBMS dans /var/local/entropia/config/DataConfigEntropia.php ligne 15</p> </blockquote> <p>Ce que j'ai essayé, c'est de charger automatiquement mon fichier DataConfig et de l'inclure dans la fonction de rappel. Mais ça n'a pas marché. Que dois-je faire? </p>
P粉214089349
P粉214089349

répondre à tous(1)
P粉448130258

phpdotenv est médiocre en matière de rapport d'erreurs (et je pense personnellement qu'il ne s'appuie pas non plus correctement sur les normes et les meilleures pratiques, ce qui peut entraîner un certain nombre d'effets secondaires, y compris les mises en garde que vous rencontrez - c'est juste que je suis assez certains de leurs auteurs pensaient qu'il s'agissait d'une fonctionnalité plutôt que d'un bug, donc je dois admettre que je ne les jugerai pas, en fin de compte, les utilisateurs doivent travailler sur eux-mêmes et comprendre ce qu'ils font).

Pour votre problème spécifique, si vous utilisez une bibliothèque, découvrez comment la configurer. Même mon commentaire précédent pourrait vous suggérer qu'il pourrait ne pas convenir, en fait - et c'est là que phpdotenv brille - il fait le gros du travail et vous pouvez contrôler la plupart des parties --- mais pas le format de fichier.

Votre problème n'est pas le format de fichier. Alors configurez votre application correctement pour obtenir les paramètres de n'importe quel environnement et gérer les conditions d'erreur (par exemple, lancer des valeurs inattendues au début). Cela devrait également révéler les erreurs que vous avez commises lors de l'utilisation de telle ou telle bibliothèque et les corriger dans votre code.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal