LoginSignup
16
15

More than 3 years have passed since last update.

Laravelでキャッシュクリアできず.envを反映できない時の対応方法

Posted at
  • 環境
    • Windows 10
    • Laravel Framework 5.5.40
    • PHP 7.3.7 (cli)

事象 : .envでDBの設定を変更したのにcache:clearでエラーになる

.envに誤ったDB設定をしてしまったので書き直したがcache:clearでエラーになる。
同じ設定でDBのクライアントツールでも他の環境でも問題なく接続できる。

$ php artisan cache:clear

In  Oci8.phpline 464:

  ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

原因 : キャッシュクリアができなくて.envの設定が反映されていないから

エラーを出している Oci8.php でデバックして確認するとDBの設定が古いままになっている。キャッシュがクリアできない!

やってみて失敗したこと : storageディレクトリにあるキャッシュ用ディレクトリの中身を削除した

php artisan cache:clear ができないのでconfig/cache.phpで指定しているキャッシュのディレクトリ配下を削除してみた

# storageディレクトリにあるキャッシュのディレクトリを確認する
$ cat config/cache.php | grep storage_path | grep framework
            'path' => storage_path('framework/cache/data'),

# 中身を全削除する
$ rm storage/framework/cache/data/*

# 事象は何も変わらなかった
$ php artisan cache:clear

In  Oci8.phpline 464:

  ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

失敗の原因 : 削除するキャッシュのファイルが違うから

.envファイルの読み込みは,php artisan config:cacheしていない場合にしか行われません! - mpyw's tech blog
というのを読んで、php artisan config:cache をやめたらいいのかと思った。

設定ファイルのキャッシュを止めることはできません。 - コードログ
というのを読んで、どうしたものかと思いとりあえずLoadEnvironmentVariablesをデバックしてみた。

そして、bootstrap/cache/config.phpというファイルがあれば.envは読み込まれず、なければ.envを読み込むことを知った。

LoadEnvironmentVariables
    /**
     * Bootstrap the given application.
     *
     * @param  \Illuminate\Contracts\Foundation\Application  $app
     * @return void
     */
    public function bootstrap(Application $app)
    {
        if ($app->configurationIsCached()) { // <<< ここの中身をデバックして設定ファイルの場所がわかった
            return;
        }

        $this->checkForSpecificEnvironmentFile($app);

        try {
            (new Dotenv($app->environmentPath(), $app->environmentFile()))->load();
        } catch (InvalidPathException $e) {
            //
        }
    }

対応方法 : bootstrap/cache/config.php を削除する

# config.phpを削除する
$ rm bootstrap/cache/config.php
# うまく行った!
$ php artisan config:clear
Configuration cache cleared!
16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15