laravel出現The cipher and / or key length are invalid 的Bug除錯

php自學中心發表於2020-11-30

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 都存在了,可是就是出現上面的錯誤。

經過除錯後,發現是讀.envkey時失效了,讀出來的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 協議》,轉載必須註明作者和本文連結

相關文章