最近有個朋友公司的正式區資料庫帳號密碼外洩,我問他為什麼會發生這樣的問題,他說因為他們家的開發人員把正式環境的Debug設定為true,我相當訝異沒想到這樣的問題既然還蠻多人不清楚差異的,於是就有了寫這篇文章的契機,這個問題我相信很多新手的Laravel都會犯這樣的錯誤,就趁這次教學把設定與驗證過程中記錄下來,也希望藉由此次分享讓初學者能更快掌握相關語法。
每個Laravel都有.env的設定檔案,通常會依照你專案運作的環境不同(正式台與測試台)
❯ php artisan env
Current application environment: local
Table of Contents
開發環境與正式環境差異設定
開發環境.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
- 官方網站-Configuration:https://laravel.com/docs/8.x/configuration
你好,我是RD爸,希望透過我的紀錄,可以帶給你一些新的想法~ 專注於各式3C產品的開箱評測、程式相關技術及理財筆記。
email ►[email protected]