【问题标题】:php extension_loaded('memcache') is false, but I can clearly see it running on the serverphp extension_loaded('memcache') 是假的,但我可以清楚地看到它在服务器上运行
【发布时间】:2014-10-13 19:51:43
【问题描述】:

这是我的开发服务器上 ps aux 的 grep

498       1575  0.0  0.0 330852   152 ?        Ssl  Jun14   2:58 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid
498       6446  0.0  0.0 330852   152 ?        Ssl  Jul23   1:09 memcached -d -p 11212 -u memcached -m 64 -c 1024 -P /var/run/memcached-2/memcached-2.pid

所以我可以看到它在那里,我正在使用带有 'Memcached' 后端的 zend 框架,它使用 extension_loaded('memcache') 来查看它是否已安装。

这是因为他们安装了 memcached2 吗?但如果是这样,为什么扩展加载功能会失败?我不是服务器迷,但我猜是在安装过程中出了点问题?

TL;DR;

为什么在服务器上运行 memcached 时 extension_loaded('memcache') 返回 false?

【问题讨论】:

  • 你是从哪里得到 memcached2 的?最新版本是 1.4.20
  • 我认为我的资源只是想将守护进程的第二个实例命名为 memcached-2 @DanFromGermany

标签: php zend-framework memcached


【解决方案1】:

您混淆了在您的服务器上运行的memcached 服务和需要与该运行服务通信的php 扩展(MemcacheMemcached)。

您必须安装其中一个或两个扩展才能在应用程序中使用 memcached。 (我推荐 Memcache(d) 之一。)成功安装扩展后,使用以下命令在您的服务器上检查它:

$ php -m | grep memcache

如果你有两个扩展,输出将是:

 $ php -m | grep memcache
   memcache
   memcached

在您的情况下,Zend Framework 尝试使用您的机器上可能未安装的 memcache 扩展(不是 memcached)。

【讨论】:

    【解决方案2】:

    据我所知,memcache 不是 memcached。检查您是否正在检查正确的扩展名(检查 memcached)。我没有太多经验,因为我用redis做缓存。

    链接:Memcache Vs. Memcached

    【讨论】:

      【解决方案3】:

      看起来好像缺少 php 模块,但守护程序正在运行,当我运行 php -m 时,我没有将 memcache 视为已安装的扩展,所以我需要安装它。

      @mrarm 该链接确实有帮助!但是memcached的extension_loaded和memcache都返回false,显然我确实需要memcache,但它的守护进程被命名为memcached。愚蠢的命名!

      【讨论】:

      • 不!服务器名为memcached。有 2 个 PHP 模块 memcachememcached 都可以访问服务器。您需要安装其中一个模块(我更喜欢memcached)才能访问memcached 服务器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多