如何使用 Redis TLS 配置 Laravel 5.7(使用 phpredis)
How to configure Laravel 5.7 with Redis TLS (Using phpredis)
我将 laravel 5.7 与 phpredis (PHP 7.2) 一起使用,但我无法让它与 tls 一起使用,我正在尝试将它与 digitalocean Redis 管理的数据库一起使用仅支持 tls 连接
知道 laravel/phpredis 是否支持 tls 吗?
来自 phpredis
Github 回购 README
$redis->connect('tls://127.0.0.1', 6379); // enable transport level security.
然后从 Laravel 的 illuminate\redis
来源,检查 PhpRedisConnector.php
第 99 行
protected function establishConnection($client, array $config)
{
$persistent = $config['persistent'] ?? false;
$parameters = [
$config['host'], // <---- Prepend the tls:// scheme here
$config['port'],
Arr::get($config, 'timeout', 0.0),
$persistent ? Arr::get($config, 'persistent_id', null) : null,
Arr::get($config, 'retry_interval', 0),
];
if (version_compare(phpversion('redis'), '3.1.3', '>=')) {
$parameters[] = Arr::get($config, 'read_timeout', 0.0);
}
$client->{($persistent ? 'pconnect' : 'connect')}(...$parameters);
}
因此,在您的 config\database.php
之前添加 tls://
模式
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'default' => [
'url' => env('REDIS_URL'),
'host' => 'tcp://' . env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
]
所以我设法让它工作,基本上 php7.2 (Ubuntu18) 附带的当前 phpredis 版本是旧的,不支持 tls,为了解决这个问题,我必须从 pecl (https://pecl.php.net/package/redis)
更新 phpredis
我将 laravel 5.7 与 phpredis (PHP 7.2) 一起使用,但我无法让它与 tls 一起使用,我正在尝试将它与 digitalocean Redis 管理的数据库一起使用仅支持 tls 连接
知道 laravel/phpredis 是否支持 tls 吗?
来自 phpredis
Github 回购 README
$redis->connect('tls://127.0.0.1', 6379); // enable transport level security.
然后从 Laravel 的 illuminate\redis
来源,检查 PhpRedisConnector.php
第 99 行
protected function establishConnection($client, array $config)
{
$persistent = $config['persistent'] ?? false;
$parameters = [
$config['host'], // <---- Prepend the tls:// scheme here
$config['port'],
Arr::get($config, 'timeout', 0.0),
$persistent ? Arr::get($config, 'persistent_id', null) : null,
Arr::get($config, 'retry_interval', 0),
];
if (version_compare(phpversion('redis'), '3.1.3', '>=')) {
$parameters[] = Arr::get($config, 'read_timeout', 0.0);
}
$client->{($persistent ? 'pconnect' : 'connect')}(...$parameters);
}
因此,在您的 config\database.php
之前添加 tls://
模式
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'default' => [
'url' => env('REDIS_URL'),
'host' => 'tcp://' . env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
]
所以我设法让它工作,基本上 php7.2 (Ubuntu18) 附带的当前 phpredis 版本是旧的,不支持 tls,为了解决这个问题,我必须从 pecl (https://pecl.php.net/package/redis)
更新 phpredis