Codeigniterプロジェクトでcomposerを使用してvlucasからphpdotenvをインストールしました。
私はフックも追加しましたが、v3.3に必要な場合は少し混乱します。
$hook['pre_system'] = function() {
$dotenv = new Dotenv\Dotenv(APPPATH);
$dotenv->load();
};
このフックを追加しないと、.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」は好きではありませんが、私が見つけたすべてのドキュメントはそれを使用しています。
助けてくれてありがとう
これにフックを変更することは機能しているようです、それが正しいアプローチであるかどうかは完全にはわかりませんが、ライブラリコードを掘り下げることは問題ないようです。
$hook['pre_system'] = function() {
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
}
これが何らかの理由で間違っている場合は、お知らせください。ありがとう
DotenvはDotenv\Loaderのインスタンスである必要があります
実際には、Laravelを任意のバージョンから5.8にアップグレードすることに関するドキュメントに従っていません。数時間検索した結果、解決策が見つかりました。最後に解決策が見つかりました。このコードを環境で置き換えるだけです。ファイル。
$env = $app->detectEnvironment(function(){
$environmentPath = __DIR__.'/../.env';
$setEnv = trim(file_get_contents($environmentPath));
if (file_exists($environmentPath))
{
putenv('APP_ENV='.$setEnv);
if (getenv('APP_ENV') && file_exists(__DIR__.'/../.' .getenv('APP_ENV') .'.env')) {
$dotenv = Dotenv\Dotenv::create(__DIR__.'/../', '.'.getenv('APP_ENV').'.env');
$dotenv->overload();
}
}});
laravel 5.8。 参照リンク で複数のenvファイルを使用する方法を詳細に確認できるリンクがあります。
コーディングをお楽しみください。 。 。 !!!
私のcomposer.json設定
"require": {
"php" : "^7.2",
"laravel/Lumen-framework" : "^6.0",
"vlucas/phpdotenv" : "~3.3"
}
これは私のために働いた解決策です
bootstrap/app.php
に移動し、次のコードを更新します
try{
$dotenv = Dotenv\Dotenv::create(dirname(__DIR__));
$dotenv->load();
}catch(Dotenv\Exception\InvalidPathException $e){
$e->getMessage();
}