我正在尝试在 Laravel 8.75.0 中配置 Redis 配置文件(用于缓存目的)以将 TLS 与证书颁发机构证书一起使用。目前,我的配置文件如下所示(基于此答案:https://stackoverflow.com/a/48876398/10031033):
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
'ssl' => ['cafile' => env('REDIS_CACHE_SSL_CA', null), 'verify_peer' => env('REDIS_CACHE_SSL_VerifyCA', false)]
],
'cache' => [
'scheme' => env('REDIS_CACHE_SCHEME', 'tcp'),
'host' => env('REDIS_CACHE_HOST', '127.0.0.1'),
'password' => env('REDIS_CACHE_PASSWORD', null),
'port' => env('REDIS_CACHE_PORT', 6379),
// 'database' => env('REDIS_CACHE_DB', 1),
],
我确信变量可以正常工作并且连接也可以正常工作,因为以下配置可以完美地工作。
$vm = array(
'host' => env('REDIS_CACHE_HOST'),
'port' => env('REDIS_CACHE_PORT'),
'timeout' => 0.8,
'scheme' => env('REDIS_CACHE_SCHEME'),
'ssl' => ['cafile' => env('REDIS_CACHE_SSL_CA'), 'verify_peer' => env('REDIS_CACHE_SSL_VerifyCA')],
);
$redis = new Client($vm);
$redis->auth(env('REDIS_CACHE_PASSWORD'));
try {
echo $redis->ping();
} catch (\Exception $e) {
// dd($e);
echo 'not';
}
有人知道我在这里做错了什么吗?我已经尝试了几个小时,但似乎无法让它发挥作用。
谢谢你
我正在使用 Google Cloud PHP 运行时引擎,这是我发现的最好的问题,但它不太有效。 所以我发布了对我有用的解决方案:
config/database.php
'redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'),
],
'default' => [
'url' => env('REDIS_URL', null),
'scheme' => env('REDIS_SCHEME', 'tls'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME', null),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'), // GCP is 6378 by default
'database' => env('REDIS_DB', '0'),
'ssl' => [
'cafile' => base_path('certificates/mycert.pem'),
'verify_peer' => true,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
],
'cache' => [
'url' => env('REDIS_URL', null),
'scheme' => env('REDIS_SCHEME', 'tls'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME', null),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'), // GCP is 6378 by default
'database' => env('REDIS_CACHE_DB', '1'),
'ssl' => [
'cafile' => base_path('certificates/mycert.pem'),
'verify_peer' => true,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
],
],
最好在环境变量中设置所有内容,但我试图简化事情。