redis默認是沒有密碼的, 但綁定到本機ip使用,當前增加安全要求對redis用密碼訪問
ThinkPHP的3.2.3版本 (路徑爲 Library\Think\Cache\Driver\Redis.class.php 以及Library\Think\Session\Driver\Redis.class.php) 的代碼需要補充安全設定。
構造方法需要增加最後三行内容
public function __construct($options = []) { if (!extension_loaded('redis')) { E(L('_NOT_SUPPORT_') . ':redis'); } $data_redis_db = C('REDIS_DB'); $options = array_merge([ 'host' => C('REDIS_HOST') ?: '127.0.0.1', 'port' => C('REDIS_PORT') ?: 6379, 'timeout' => C('DATA_CACHE_TIMEOUT') ?: false, 'persistent' => false, 'auth' => C('REDIS_AUTH') ? C('REDIS_AUTH') : false, 'db' => empty($data_redis_db) ? 0 : $data_redis_db, ], $options); $this->options = $options; $this->options['expire'] = isset($options['expire']) ? $options['expire'] : C('DATA_CACHE_TIME'); $this->options['prefix'] = isset($options['prefix']) ? $options['prefix'] : C('DATA_CACHE_PREFIX'); $this->options['length'] = isset($options['length']) ? $options['length'] : 0; $func = $options['persistent'] ? 'pconnect' : 'connect'; $this->handler = new \Redis; $options['timeout'] === false ? $this->handler->$func($options['host'], $options['port']) : $this->handler->$func($options['host'], $options['port'], $options['timeout']); // 增加代碼,設置redis安全性,增加認证密碼 if (isset($options['auth']) && $options['auth']) { $this->handler->auth($options['auth']); } }