solr php扩展无法在最新的Debian Wheezy上运行

我正在尝试在最近升级的Debian Wheezy上使用Solr PHP扩展。 它从PECL和源代码完美地安装,而不是给我预期的function,它在每个PHP运行中给我这个:

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/solr.so' - /usr/lib/php5/20100525/solr.so: undefined symbol: curl_easy_getinfo in Unknown on line 0 

另外使用扩展的脚本会引发错误

 PHP Error[2]: include(SolrClient.php): failed to open stream: No such file or directory in file <...path to my autoloader...> 

我的主要观点是它之前build立起来,像一个魅力一样工作。 在相关软件包的升级中,只改变了PHP和libcurl的版本。 Solr实例本身保持原样。

我有所有可能的libcurl库:

 $ locate libcurl ... /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.2.0 /usr/lib/x86_64-linux-gnu/libcurl.a /usr/lib/x86_64-linux-gnu/libcurl.la /usr/lib/x86_64-linux-gnu/libcurl.so /usr/lib/x86_64-linux-gnu/libcurl.so.3 /usr/lib/x86_64-linux-gnu/libcurl.so.4 /usr/lib/x86_64-linux-gnu/libcurl.so.4.2.0 ... /usr/lib32/libcurl.so.3 /usr/lib32/libcurl.so.4 /usr/lib32/libcurl.so.4.2.0 ... 

我用aptitude已经安装了php5-curl软件包版本5.4.4-2。

我同时安装了Sorl扩展

 sudo pecl install solr 

(使用-f-n标志的各种组合,并尝试过solr-beta )以及

 wget ... cd ... phpize ./configure make make install 

我正在安装1.0.2版本的扩展,因为它在从Squeeze升级到Wheezy之前工作。 正如我刚才所说,扩展安装没有任何错误。

我已经添加了extension=solr.so咒语到/etc/php5/mods-available/solr.ini

我应该做些什么魔术来使solr扩展工作? 这是真的,我唯一的解决scheme是降级升级之前的libcurl版本?

好的,我自己find了答案。 问题出在configuration错误。 最新的Wheezy PHP的configuration树如下:

 /etc/php5/mods-available/*.ini # here's the ini files containing `extension=modulename.so` lines and module-specific config. /conf.d/NN-*.ini # here's the symlinks to real .ini files in mods-available /cli/conf.d # symlink from local CLI conf.d to global conf.d /apache/conf.d # symlink from local apache conf.d to global conf.d 

所以我需要做以下的事情:

  • 用行"extension=solr.so"添加一个文件/etc/php5/mods-available/solr.ini
  • 添加一个指向真实solr.ini的符号链接/etc/php5/conf.d/30-solr.ini
  • 做相同的事情curl.so
  • 确保"extension=solr.so""extension=curl.so"没有写其他地方。 这是这个奇怪的错误消息的原因。

我认为configuration由于最近从Squeeze升级到Wheezy而变得混乱,因为所有这些configuration设置都应该由包pipe理器完成。

我遇到了同样的错误。

FWIW – 我的工作是从我的php.ini文件的顶部移动“扩展= solr.so”到底部 – 显然顺序是重要的,curl扩展需要先拉。

希望它可以帮助别人。

对CentOS 6.4下的任何人来说,这是为我做的。 由于hijarian,这是他的答案的修改。

安装完所有东西后,编译solr.so扩展,在/etc/php.d下创build一个新的solr.ini文件

使用nano,例如: nano /etc/php.d/solr.ini

添加一行到包含extension=solr.so文件,保存并退出。

打开/usr/php.ini文件并添加extension=solr.so ,保存并退出。

重新启动Apache …

/etc/init.d/httpd restart

你应该全部完成!

curl模块必须在solr模块之前加载。 所以,请确保你在conf.d中有这样的内容:20-curl.ini 30-solr.ini(而不是10-solr.ini)

或者在你的“extension = curl.so”之后加上“extension = solr.so”