【问题标题】:Cakephp 2 - Redis - Docker | Connection RefusedCakephp 2 - Redis - Docker |拒绝连接
【发布时间】:2021-07-17 08:32:15
【问题描述】:

我已经解决了这个问题到互联网的尽头,没有任何运气。

我从 cakes Cache.php 收到“连接被拒绝”错误

我的引擎设置为 Redis,我让 docker 正确构建了映像(至少我相信我这样做了),一切似乎都是正确的,但对于我来说,我无法让缓存引擎工作。

这是我目前设置的:

Dockerfile
RUN yes | apt-get install redis-server

RUN pecl install redis \
&& echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini \
&& rm -rf /tmp/pear

docker-compose.yml
redis:
image: "app-redis:cont"
ports:
- "6379:6379"

package.json
"deployRedis": "docker build . -f Dockerfile.redis -t app-redis:cont",

core.php
$engine = 'Redis';
Cache::config('default', [
'engine' => $engine,
'prefix' => $prefix . 'default_',
'path' => CACHE . 'persistent' . DS,
'serialize' => $serializingEngine, 'duration' => $duration,
]);

Cache::config('_cake_core_', [
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => $serializingEngine,
'duration' => $duration,
]);

当我调试 extension_loaded('redis'); 时,我得到的值是 true

这是转储到浏览器的错误消息
Fatal error: Uncaught CacheException: Cache engine "default" is not properly configured. Ensure required extensions are installed, and credentials/permissions are correct in /var/www/html/public/app.name.local/lib/Cake/Cache/Cache.php on line 190

最后,当我在 connect 方法的 RedisEngine.php 文件中调试时,从 $e 这是错误消息:
**"Connection refused"**

如果值得一提,我已经检查了 docker 中正在运行哪些映像,并且确实看到了 Redis:

b38550ff4f38 app-redis:cont "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 6379/tcp app_redis.1.j0r12vgrsmv6hbtagcy3oj9vv

高度赞赏任何建议,因为我已经在这方面工作了将近 2 天。

谢谢!

【问题讨论】:

    标签: php docker cakephp redis connection


    【解决方案1】:

    你看php代码了吗?

    https://api.cakephp.org/2.2/source-class-RedisEngine.html#63

    array(
      'engine' => 'Redis',
      'prefix' => null,
      'server' => '127.0.0.1',
      'port' => 6379,
      'timeout' => 0,
      'persistent' => true
     )
    

    试试:

    Cache::config('default', [
        'engine' => $engine,
        'prefix' => $prefix . 'default_',
        'server' => 'redis', // docker || '127.0.0.1', <------------
        'port' => 6379, // <----------------
        'path' => CACHE . 'persistent' . DS,
        'serialize' => $serializingEngine,
        'duration' => $duration,
    ]);
    

    【讨论】:

    • 你完成了我的一周。非常感谢你。在 RedisEngine.php 中将服务器更改为 redis 解决了这个问题。
    • @Telah32 不要更改 RedisEngine.php 文件,只需添加您的 Cache::config('default', ... 并接受答案
    猜你喜欢
    • 2017-07-10
    • 2016-02-14
    • 2019-01-22
    • 2015-12-13
    • 2019-10-19
    • 2021-01-24
    • 2021-09-18
    • 2022-01-03
    • 2017-11-14
    相关资源
    最近更新 更多