我能否使用PECL安装memcached PHP扩展?

12
我在尝试从PECL安装"memcached" PHP扩展时遇到了问题,但我可以成功安装"memcache" 扩展(它们是不同的PHP扩展)。
例如,这些命令可以正常工作: $sudo pecl install memcache $sudo pecl install APC $sudo pecl install oauth
然而,尝试安装memcached会导致错误: $sudo pecl install memcached ... ld:找不到-lmemcached库 collect2:ld返回1状态 make:*** [memcached.la] 错误1 ERROR:`make' failed
我在最近的Intel Mac上使用来自Mac Ports (macports.org)的pecl、memcached和libmemcached。libmemcached库可以在/opt/local中找到。
任何想法我可能错在哪里?
4个回答

34

Andrei Zmievski(memcached插件的开发者)非常友好地回复了我的电子邮件请求,并提供了以下说明:

$ pecl download memcached
$ tar zxvf memcached-1.0.0.tgz (or whatever version downloads)
$ cd memcached-1.0.0
$ phpize
$ ./configure --with-libmemcached-dir=/opt/local
$ make
$ sudo make install

这个非常完美地解决了问题。


3
"/opt/local"是指的什么?我不明白这个部分。 - Chris Harrison
对于MAMP 1.9上的memcache(而不是memcached),我必须使用以下方法进行配置:./configure --prefix=/Applications/MAMP/ --with-php-config=/Applications/MAMP/bin/php5.3/bin/php-config - phemios
1
@ChrisHarrison: /opt/local 是 MacPorts 的安装位置(不过我现在使用 Brew)。 - richardkmiller
哎呀,你需要经历的麻烦真多。无论如何,上面的解决方案对我有效(使用libmemcached 1.0.10和memcached 2.1.0),还需要一些额外的步骤:首先执行“sudo port install libmemcached”,然后将“extensions=memcached.so”添加到我的/private/etc/php.ini中,并进行“sudo apachectl restart”以确保生效。 - PapaFreud
1
生成:*** 没有规则可以生成目标“install”。停止。 - user9728810

2
同样的情况也发生在我这里。我不得不使用明确的路径名称(我将我的php等文件放在/opt/local下)。
  • /opt/local/bin/pecl download memcached
  • tar zxvf memcached-1.0.0.tgz
  • cd memcached-1.0.0
  • /opt/local/bin/phpize
  • ./configure --prefix=/opt/local --with-php-config=/opt/local/bin/php-config --with-libmemcached-dir=/opt/local
  • make
  • make install
通常在Mac OS X上使用MacPorts这类工具来安装这种软件很简单,但目前还没有针对php5-memcached的软件包(只有一个较旧的、没有“d”的memcache软件包)。哦,还有我还不得不安装一个较旧版本的libmemcached,因为最新版本在我的Mac OS X 10.5.8上无法编译。唉!

对于其他人而言,在十多年后仍能在运行Catalina (10.15.7)的Mac上为PHP 8.0使用'memcache'(而不是memcached)。我没有/opt/local/bin/,但您可以编译到任何您喜欢的地方,例如/usr/local/src/,它会自动将其放入类似/usr/local/Cellar/php@8.0/8.0.23_1/pecl/20200930/的目录中。 - William Turrell

1

正如您所见,新的memcached扩展使用libmemcached来完成重要工作。如果是Linux,我会说您可能没有在ld.so.conf中列出/opt/local/lib/(并运行'ldconfig')。

然而,MaxOSX不使用它。但是,显然可以从“ports”安装。 http://lsimons.wordpress.com/2008/05/01/serious-php-part-1/


0

经过多次尝试,只有这个解决方案对我有效。

  1. 安装XAMPP
  2. 安装brew (https://github.com/Homebrew/homebrew/wiki/Installation)
  3. $ brew
  4. 安装libmemcached
  5. cd /Applications/XAMPP/xamppfiles/bin/
  6. $ sudo ./pecl install memcached

构建过程成功完成 正在安装'/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20121212/memcached.so' 安装成功:channel://pecl.php.net/memcached-2.2.0 配置选项 "php_ini"未设置为php.ini位置 您应该将"extension=memcached.so"添加到php.ini中

大功告成!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接