首頁 >php框架 >Laravel >laravel中env取得不到數據怎麼辦

laravel中env取得不到數據怎麼辦

WBOY
WBOY原創
2022-06-02 17:14:524174瀏覽

在laravel中,可用「php artisan config:clear」語句清除config緩存,解決env取得不到資料的問題;問題產生的原因是快取設定檔透過env函數讀取環境變量,可能會導致該讀取不到環境變量,所以回傳null。

laravel中env取得不到數據怎麼辦

本文操作環境:Windows10系統、Laravel5.4版、Dell G3電腦。

laravel中env取得不到資料怎麼辦

解決方案:

清除config快取指令

php artisan config:clear

原因

在Laravel 中,如果執行php aritisan config:cache 指令,Laravel 會把app/config 目錄下的所有設定檔「編譯」整合成一個快取設定檔到bootstrap/cache/ config.php,每個設定檔都可以透過env 函數讀取環境變量,這裡是可以讀取的。但是一旦有了這個快取配置文件,在其他地方使用env 函數是讀取不到環境變數的,所以返回null.

讓我們看看這段程式碼,Illuminate/Foundation/Bootstrap/DetectEnvironment. php line 18:

public function bootstrap(Application $app){
        if(!$app->configurationIsCached()){
            $this->checkForSpecificEnvironmentFile($app);
            try{
                (newDotenv($app->environmentPath(),$app->environmentFile()))->load();
            }catch(InvalidPathException$e){
            }
        }
    }

這個方法在框架啟動後就會運行,這段程式碼說明瞭如果存在快取配置文件,就不會去設定環境變數了,配置都讀取快取配置文件,而不會再唸環境變數了。

因此,在設定檔即app/config 目錄下的其他地方,讀取設定不要使用env 函數去讀環境變量,這樣你一旦執行php artisan config:cache 之後,env 函數就不起作用了。所有要用到的環境變量,在 app/config 目錄的設定檔中透過 env 讀取,其他地方要用到環境變量的都統一讀取設定檔而不是使用 env 函數讀取。

【相關推薦:laravel影片教學

以上是laravel中env取得不到數據怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn