在CentOS上使用PHP 7的Memcache扩展无法安装

时间:2016-05-31 16:19:41

标签: memcached pecl php-7 centos6.5

我试图将相当大的PHP 5.3代码库升级到PHP 7.它托管在CentOS 6.5上,所以我想将它保留在该操作系统上。我目前正在使用处女Vagrant盒子 - 我已经成功安装了PHP 7,以及除了Memcache之外的所有模块。

作为root用户,当我运行pecl install memcache时,它会尝试安装v2.2.7,但我会从 make 中获取一长串错误和警告。最后是:

make: *** [memcache.lo] Error 1
ERROR: `make' failed

根据GoPHP7它应该有效,Memcache应该使用PHP 7 - 它在github "上说" php7 port。的确有一个Memcache PHP 7 port on GitHub。当我查看Memcache page on Pecl页面时,它显示我应该安装v3.0.8,但这是测试版(自2013年以来)。

所以我尝试运行pecl install memcache-3.0.8但它仍然失败,出现与上面相同的错误:

make: *** [memcache.lo] Error 1
ERROR: `make' failed

那么可以在CentOS 6.5上使用PHP 7来运行Memcache扩展吗?

1 个答案:

答案 0 :(得分:24)

如果你还没有解决这个问题,我有一个适合我的解决方案。我在CentOS 7.x上但是它应该仍适用于你,而且其他任何人都希望将pecl-memcache与PHP 7一起使用(而不是pecl-memcached,因为这是一个完全不同的包。)

正如您已经发现的那样,您必须使用Memcache PHP 7 port on GitHub

登录您的shell并执行以下操作:

 1. wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip
 2. unzip NON_BLOCKING_IO_php7.zip
 3. cd pecl-memcache-NON_BLOCKING_IO_php7
 4. /opt/cpanel/ea-php70/root/usr/bin/phpize && ./configure --enable-memcache --with-php-config=/opt/cpanel/ea-php70/root/usr/bin/php-config && make
 5. cp modules/memcache.so /opt/cpanel/ea-php70/root/usr/lib64/php/modules/
 6. echo 'extension=memcache.so' >/opt/cpanel/ea-php70/root/etc/php.d/memcached.ini
 7. service httpd restart

以上的一些注意事项:

  • 将我使用的每个完整路径替换为您自己系统上相应的完整路径。虽然我有/ opt / cpanel / ea-php70 / root /,但您可能有/opt/php-7.0.7/。如果您安装了多个PHP版本,那么运行phpize可能最终会使用旧版本的PHP进行构建。经过多次试验和错误,我发现了这一点。
  • 要找出PHP模块文件夹的位置,可以运行“/ opt / cpanel / ea-php70 / root / usr / bin / php -i | grep extension_dir”
  • 如果你已经在其他地方加载了memcached.ini,你可能不需要执行第6步。
  • 您可以使用“/ opt / cpanel / ea-php70 / root / usr / bin / php -i | grep memcache”验证它是否已正确构建和安装。如果您看到各种memcache条目,则所有内容都已成功安装。

我希望有所帮助!