《Laravel – 談APP_ENV正式環境與開發環境設定差異 – 學習筆記》工具分享

Telegram share !

最近有個朋友公司的正式區資料庫帳號密碼外洩,我問他為什麼會發生這樣的問題,他說因為他們家的開發人員把正式環境的Debug設定為true,我相當訝異沒想到這樣的問題既然還蠻多人不清楚差異的,於是就有了寫這篇文章的契機,這個問題我相信很多新手的Laravel都會犯這樣的錯誤,就趁這次教學把設定與驗證過程中記錄下來,也希望藉由此次分享讓初學者能更快掌握相關語法。

每個Laravel都有.env的設定檔案,通常會依照你專案運作的環境不同(正式台與測試台)

❯ php artisan env
Current application environment: local

開發環境與正式環境差異設定

開發環境.env設定檔

APP_NAME=Laravel
APP_ENV=local  # 設定為本機
APP_KEY=base64:專案自動產生略...
APP_DEBUG=true # 開啟偵錯模式
APP_URL=http://localhost

當你在開發應用程式的時候,總是希望能看到比較詳細的錯誤資訊,以利後續程式的偵錯與問題排除,但是在正式環境你不用向所有訪客顯示程式的詳細錯誤,你只要顯示客製化的錯誤頁面即可。

正式環境.env設定檔

APP_NAME=Laravel
APP_ENV=production # 設定為production
APP_KEY=base64:專案自動產生略...
APP_DEBUG=false。  # 關閉偵錯模式
APP_URL=http://localhost

當程式部署到正式環境的時候,要注意APP_DEBUG=false 這個設定,因為如果不小心設定為true,那你就有機會暴露資料庫帳號密碼或是不小心在頁面上顯示你的開發原始碼,這對主機的安全性產生相當大的隱憂。

程式使用情境

程式裡可以依照環境不同給予不同的判斷條件式

if(config('app.env') =='production'){
    # code...
} else {
    # code...
}

Laravel Blade使用情境

@production
     // code here
@endproduction
@env('local')
    // The application is running in "local"...
@endenv

@env(['local', 'production'])
    // The application is running in "local" or "production"...
@endenv

結論

善用APP_ENV可以讓你在團隊開發上產生很大的彈性,也大大降低生產環境的安全性問題,建議可以找時間套用到自己手邊的專案,慢慢的優化你的Laravel專案,相信會讓你的開發工作更有效率。

※PAPA TIPS:注意在.env檔案內容異動後,記得在專案的根目錄執行php artisan config:clear 並且執行php artisan env 確認一下目前的執行的環境

Reference