Non-static method Redis::****() cannot be called statically

出現原因(第一種)

  • Laravel 使用 predis 擴展,同時 php 也安裝並使用了 phpredis 擴展。由於上述兩個 redis 擴展都是用了 Redis 作爲命名空間,造成命名空間衝突

出現原因(第二種)

  • 真沒有靜態方法(😭)
  • 你的 Laravel 項目中,之前使用的是 predis,現在切換成 phpredis。那麼之前代碼中的靜態的方法就會報錯

解決原因一方式

  • 方式一: Laravel 中,由於 predis 是基於php製作的擴展,可通過 composer 添加,方便與 Laravel 整合。所以,可通過在 php.ini 中註釋 phpredis 的擴展,避免了衝突。
    ;extension = redis.so
    • 缺點:
      • predis 已經取消維護,Laravel 從6版本開始,推薦使用 phpredis
  • 方式二: 代碼中,明確指明 Redis
    use Illuminate\Support\Facades\Redis;
  • 方式三: 當然,換個 aliase(別名) 也是穩的
config\app.php 當中
'Redis' => Illuminate\Support\Facades\Redis::class
替換爲
'想要的名稱' => Illuminate\Support\Facades\Redis::class
代碼中使用 
use 想要的名稱;

解決原因二方式

  • 代碼量不大可以替換之。代碼量大…用 predis

注意鏈接

Laravel 6 使用 Redis 注意事項
phpredis 和 predis 區別

發佈了14 篇原創文章 · 獲贊 4 · 訪問量 2928
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章