Php5
solr php 擴展無法在最新的 Debian Wheezy 上執行
我正在嘗試在最近升級的 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,因為所有這些配置設置都應該由包管理器完成。