我正在使用 laravel 8,当我尝试运行时,它会抛出错误:
php artsian config:clear
在 laravel 上,这是我的配置值(因为我正在尝试使用 phpredis):
'client' => env('REDIS_CLIENT', 'phpredis'),
我现在可以使用 redis-cli 和 ping。不,只是我可以成功到达以下端点。
public function testRedis()
{
Redis::set('ping','pong');
$ping = Redis::get('ping');
dd($ping);
}
成功打印出
pong
。
但我正在上课
Redis
未找到。每当我尝试跑步时,php artisan config:clear
完整错误如下所示:
Class "Redis" not found
at vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:75
71▕ * @throws \LogicException
72▕ */
73▕ protected function createClient(array $config)
74▕ {
➜ 75▕ return tap(new Redis, function ($client) use ($config) {
76▕ if ($client instanceof RedisFacade) {
77▕ throw new LogicException(
78▕ extension_loaded('redis')
79▕ ? 'Please remove or rename the Redis facade alias in your "app" configuration file in order to avoid collision with the PHP Redis extension.'
+10 vendor frames
11 app/Models/Setting.php:34
Illuminate\Support\Facades\Facade::__callStatic()
12 app/Providers/AppServiceProvider.php:37
App\Models\Setting::getCachedValue()
我的
App\Models\Setting
看起来像:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;
class Setting extends Model
{
use HasFactory;
protected $table = 'settings';
protected $guarded = ['id'];
protected $dates = ['created_at','updated_at'];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime:Y-m-d', // Change your format
'updated_at' => 'datetime:Y-m-d',
];
const STRIPE_ENVIRONMENT = ['test', 'live'];
public static function getCachedValue(){
return Cache::rememberForever('settings', function () {
return Setting::pluck('key_value', 'key_name');
});
}
public static function updateCachedSettingsData(){
Cache::forget('settings');
self::getCachedValue();
}
}
什么,我可能在这里做错了。 #PS:我的
config/app
上的这一行已被评论。
// 'Redis' => Illuminate\Support\Facades\Redis::class,
安装后您必须在 .env 文件中指定“REDIS CLIENT”
composer require predis/predis
在 .env 文件中添加这些行
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_CLIENT=predis
好吧,我发现了这个问题,有更新推送到了ubuntu,这次更新看起来默认php更新到了php8.0,之前是7.4。因此,运行以下命令可以解决该问题。
sudo apt-get install php8.0-redis
看起来缺少 php 8.0 的 redis 扩展
将此添加到
app.php
文件
'aliases' => Facade::defaultAliases()->merge([
'Redis' => Illuminate\Support\Facades\Redis::class,
])->toArray(),