Php5

solr php 擴展無法在最新的 Debian Wheezy 上執行

  • November 17, 2013

我正在嘗試在最近升級的 Debian Wheezy 上使用 Solr PHP 擴展。它完美地從 PECL 和源安裝,但它沒有給我預期的功能,而是在每次 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...>

我的主要觀點是,它是以前設置的,並且像一個魅力一樣工作。在相關軟體包的升級中,僅更改了 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
...

我已經安裝了php5-curl帶有 aptitude 的軟體包版本 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 擴展工作?我唯一的解決方案是像升級前一樣降級 libcurl 版本,這是真的嗎?

好的,我自己找到了答案。問題在於配置錯誤。在最新的 Wheezy 上,PHP 的配置樹如下:

/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

所以我需要做以下事情:

  • /etc/php5/mods-available/solr.ini使用該行添加文件"extension=solr.so"
  • 添加/etc/php5/conf.d/30-solr.ini指向真實 solr.ini的符號連結
  • 做同樣的事情curl.so
  • 確保"extension=solr.so"and"extension=curl.so"沒有寫在其他任何地方。這就是這個奇怪的錯誤資訊的原因。

我認為配置變得混亂是因為最近從 Squeeze 升級到 Wheezy,因為所有這些配置設置都應該由包管理器完成。

引用自:https://serverfault.com/questions/404034