【问题标题】:install memcache onfedora linux OS在 fedora linux 操作系统上安装 memcached
【发布时间】:2011-06-17 03:43:45
【问题描述】:

我通过以下方式安装了memcache:

1) yum install memcached 2) 百胜安装 php-pecl-memcached 3) 还在 php.ini 中启用了 'memcached.so'

我用以下方式测试了memcached:

$mc = 新的内存缓存; $mc->addServer('localhost', 11211); echo "服务器版本:" . $mc->getVersion() ;

但它会产生以下错误:

PHP 警告:PHP 启动:无法加载动态库 '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so:未定义符号:在线未知中的 php_json_encode 0 PHP 致命错误:在第 2 行的 /root/memcacheTest.php 中找不到类“Memcache”

谢谢你。

【问题讨论】:

  • 投票结束:离题:这个问题属于 ServerFault。

标签: apache memcached


【解决方案1】:

我不太了解 PHP(或根本不了解 PHP),但从错误消息中我会猜测您没有安装 PHP JSON 扩展,这显然是 memchached 扩展所需要的。

Apparently,JSON 扩展从 PHP 5.2.0 开始就在 PHP 中,因此:

  • 您的版本较旧,需要自行升级或安装 JSON 扩展

或

  • 您的操作系统经销商在您尚未安装的不同包中提供 PHP JSON 扩展。

当然存在配置错误的可能性,但我认为可能性稍小。

【讨论】:

    【解决方案2】:

    这表明 memcached.so 没有成功加载。

    错误说明原因:json.so 应该在 memcached.so 之前加载

    请使用php -m | grep memcached检查memcached.so是否加载成功。

    • 如果显示memcached,则表示成功。
    • 如果显示像PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: php_json_decode_ex in Unknown on line 0

    解决方法如下: 例如你的 php.ini 是 /etc/php.ini,你的 php.d 是 /etc/php.d/

    解决方案 1

    1. 在 php.ini 中注释“memcached.so”
    2. vim /etc/php.d/memcached.ini
    3. 在 /memcached.ini 中添加 extension=memcached.so
    4. php -m | grep memcached检查memcached是否加载成功

    解决方案 2

    1. rm /etc/php.d/json.ini
    2. 在extension=memcached.so之前的php.in中添加extension=json.so
    3. php -m | grep memcached检查memcached是否加载成功

    【讨论】:

      【解决方案3】:

      您可以检查并仔细检查用户权限吗?此外,我使用 PHP 的经验是 PHP 的分发存储库版本不是很好。我通过从头开始编译 PHP 解决了这些符号错误。但这是一个非常激进且耗时的解决方案。

      【讨论】:

        【解决方案4】:

        http://pecl.php.net/bugs/bug.php?id=17574&edit=1

        只需确保在之前指定了 extension=json.so extension=memcached.so.

        我在 php.ini 中放置了 extension=memcached.so,而 extension=json.so 在 /etc/php.d/json.ini 中指定,在 php.ini 之后解析。 这就是为什么 PHP 在加载时找不到 php_json_encode() memcached.so.

        另外,检查 memcached.so 的权限是否与其他扩展相同

        【讨论】:

          【解决方案5】:

          尝试安装 2.0 版本。它对我有帮助。

          yum -y install gcc-c++
          wget http://launchpad.net/libmemcached/1.0/0.50/+download/libmemcached-0.50.tar.gz
          tar xzf libmemcached-0.50.tar.gz 
          cd libmemcached-0.50
          ./configure 
          make 
          make install
          wget http://pecl.php.net/get/memcached-2.0.0b2.tgz
          pecl install memcached-2.0.0b2.tgz
          echo 'extension=memcached.so' > /etc/php.d/memcached.ini
          service php-fpm restart
          cd ..
          rm -r libmemcached-0.50*
          rm -r memcached-
          

          【讨论】:

            猜你喜欢
            • 2017-01-19
            • 1970-01-01
            • 2013-09-18
            • 1970-01-01
            • 2020-12-24
            • 1970-01-01
            • 1970-01-01
            • 2013-03-20
            • 1970-01-01
            相关资源
            最近更新 更多