web-dev-qa-db-ja.com

サーバーを再起動せずに.env変数をリロードする(Laravel 5、共有ホスティング)

My Laravel 5はデータベースが設定されるまでOKを実行し、このエラーを見つけました:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

いくつかの調査を行うと、MySQLアクセスの構成が遅すぎるように思われるため、正しい環境変数を取得するためにサーバーを再起動する必要があります。まあ、私はDreamhostの共有サーバーを使用していますが、それはできません。

この問題を修正するにはどうすればよいですか?

ありがとう

22
godsaway

サーバーでphp artisan config:cacheを実行した場合、Laravel=アプリは.envファイルに入れた古い構成設定をキャッシュできます。

php artisan config:clearを実行して修正します。

55
morph

構成変数がキャッシュされている可能性があります。 config/app.php.envファイル

php artisan cache:clear

コマンドラインで。

12
AurelienT

私はこれが古いことを知っていますが、ローカル開発者にとっては、これが実稼働環境の.envファイルに戻ったものです:

rm bootstrap/cache/config.php

それから

php artisan config:cache
php artisan config:clear
php artisan cache:clear
5
Janiis

簡単な解決策:

use Dotenv;

with(new Dotenv(app()->environmentPath(), app()->environmentFile()))->overload();
with(new LoadConfiguration())->bootstrap(app());

私の場合、プログラムで.envを変更した後、データベース接続を再確立する必要がありましたが、機能しませんでした。この問題が発生した場合は、これを試してください

app('db')->purge($connection->getName()); 

.envをリロードした後、それはLaravelアプリが以前にデフォルトの接続にアクセスし、\Illuminate\Database\DatabaseManagerは、構成パラメーターを再読み取りする必要があります。

4
MatteoOreficeIT

Webサーバーをリロードできない(キューランナーのように長時間実行されるコンソールコマンド)か、リクエストの途中で.envファイルをリロードする必要があるこの質問に誰かがつまずく場合、laravel 5。

use Dotenv;
use InvalidArgumentException;

try {
    Dotenv::makeMutable();
    Dotenv::load(app()->environmentPath(), app()->environmentFile());
    Dotenv::makeImmutable();
} catch (InvalidArgumentException $e) {
    //
}
3
Question Mark

明確にするために、ケースに応じてクリアできるキャッシュには4つのタイプがあります。

php artisan cache:clear

アプリケーションキャッシュをクリアする場合は、コンソールで上記のステートメントを実行できます。このステートメントは、storage\framework\cache内のすべてのキャッシュをクリアします。

php artisan route:cache

これにより、ルートキャッシュがクリアされます。したがって、新しいルートを追加した場合、またはルートコントローラーまたはアクションを変更した場合は、これを使用して同じものをリロードできます。

php artisan config:cache 

これにより、envファイルのキャッシュがクリアされ、リロードされます

php artisan view:clear 

これにより、アプリケーションのコンパイル済みビューファイルがクリアされます。

共有ホスティングの場合

ほとんどの共有ホスティングプロバイダーは、システムへのSSHアクセスを提供しません。そのような場合、ルートを作成し、次のように次の行を呼び出す必要があります。

Route::get('/clear-cache', function() {
    Artisan::call('cache:clear');
    return "All cache cleared";
});
0