laravel5專案最近在本地都沒有錯誤,但是上傳到線上出現錯誤。
具體錯誤資訊:
No supported encrypter found. The cipher and / or key length are invalid.
在config/app.php
的配置裡
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
在.env
裡的APP_KEY=base64:/Y1/uU5a9UeZyCzD9MavRtEiZnMjfHaZ3/2PnsPMJAo=
也是存在的。
對應的key與cipher 都存在了,可是就是出現上面的錯誤。
經過除錯後,發現是讀.env
的key
時失效了,讀出來的null
解決辦法就是
1 先把 .env
裡的APP_KEY
的字串刪了,重新生成KEY
,在專案根目錄下操作,語句:php artisan key:generate
生成的KEY會自動補到.env裡的APP_KEY裡。config/app.php
的配置裡的key與cipher不需要改動。
2 因為是env失效,所以接下來你要做的是清除快取,重新來過,語句:php artisan config:clear
php artisan config:cache
具體為什麼要清除快取,可以網上查詢其底層機制。
如果上面的處理扔沒有效果,那很有可能是你的php.ini
裡開啟了putenv
函式,這種情況在寶塔環境中經常出現。
解決的辦法,如果發現php.ini
裡有開啟putenv
函式,請刪除掉。
3 最後一步,不要忘記了,因為是線上上的,所以要重啟一下伺服器,比如nginx
。還需要重啟php-fpm
以上我是除錯成功了,希望也能幫助到你吧!
好記性不如爛筆頭,學習php開發也不能懶,作筆記是一種學習的好習慣!
更多Laravel筆記可關注以下公眾號,並獲取相關的視訊教程【laravel7.x 從入門到核心架構講解】
本作品採用《CC 協議》,轉載必須註明作者和本文連結