添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近有個朋友公司的正式區資料庫帳號密碼外洩,我問他為什麼會發生這樣的問題,他說因為他們家的開發人員把正式環境的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

《Laravel 8 – Clear Cache of Route, View, Config 清除快取 – 學習筆記》工具分享 《Laravel – 如何清除Laravel.Log – 學習筆記》工具分享 《Laravel – 解決Mac上使用composer建立laravel時會出現zsh: no matches found的問題 – 學習筆記》工具分享 《Laravel – 如何使用URL – 學習筆記》 《Laravel – 善用LOG挖掘問題的真相 – 學習筆記》
  • 3C開箱, 開箱筆記
  • 《影片備份 – yt-dlp Youtube影片下載工具的首選 – 學習筆記》 《使用LINE BOT時,如果當後端API作業還在處理中,需要等待回應,這時可以在使用者的聊天畫面上顯示載入動畫 – SDK筆記》 《5分鐘搞懂OPcache(Optimized PHP Cache) PHP 內建的一個記憶體快取系統 – 學習筆記》 《倍思Baseus BA04 藍牙接收器 USB Bluetooth 5.1– 開箱分享》 《Haiper AI!開啟AI影片生成的第一槍 – AI影音生成工具》