PHP Redis擴展無法加載的問題解決方法
最近在工作中需要使用PHP訪問Redis,從https://github.com/phpredis/phpredis下載了phpredis,并且按照官方的說明進行了安裝
phpize ./configure [--enable-redis-igbinary] make && make install
但是在重啟php-fpm的過程中,發(fā)生了如下的錯誤,redis.so無法載入
[root@brand009 modules]# /usr/sbin/php-fpm /usr/sbin/php-fpm: /usr/lib64/libssl.so.10: no version information available (required by /usr/sbin/php-fpm) /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm) /usr/sbin/php-fpm: /usr/lib64/libcrypto.so.10: no version information available (required by /usr/sbin/php-fpm) [29-Jun-2015 11:14:43] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: zend_new_interned_string in Unknown on line 0 <br /> <b>Warning</b>: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: zend_new_interned_string in <b>Unknown</b> on line <b>0</b><br /> <br />
試了網(wǎng)上一些解決方案,均無法解決問題。
實在沒別的辦法,于是打算重裝php-fpm試試,遂去http://php-fpm.org/download/想下載個新版本的php-fpm,結(jié)果發(fā)現(xiàn)版本大于5.3.3的PHP內(nèi)部已經(jīng)集成了php-fpm,不用再另行安裝了。

于是用php --version查詢了一下PHP的版本,已經(jīng)是5.6.6了,
php --version PHP 5.6.6 (cli) (built: Mar 9 2015 13:27:38) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
突然恍然大悟,自己一直用的是安裝在另一個目錄的php-fpm,和PHP并不是配套的
查看這個php-fpm的版本,發(fā)現(xiàn)是5.3.3
$/usr/sbin/php-fpm -v PHP 5.3.3 (fpm-fcgi) (built: Oct 30 2014 20:14:56) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
而PHP內(nèi)部集成的php-fpm版本是5.6.6
$ /usr/local/php/sbin/php-fpm -v PHP 5.6.6 (fpm-fcgi) (built: Mar 9 2015 13:27:55) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
用PHP內(nèi)部集成的php-fpm重啟,成功!
root 18442 1 0 17:36 ? 00:00:01 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) nobody 30640 18442 0 18:04 ? 00:00:02 php-fpm: pool www nobody 31156 18442 0 18:05 ? 00:00:02 php-fpm: pool www nobody 32424 18442 0 18:08 ? 00:00:02 php-fpm: pool www
所以粗心害死人啊,以后在安裝程序的時候需要多加小心,盡量顯式的標(biāo)明軟件的版本,這樣就會少犯這樣的錯誤,少走彎路了。
另外需要注意:
在php.ini中一定要配置extension_dir和extension,如:
extension_dir = "/usr/lib64/php/modules/" extension=redis.so
phpredis編譯出來的redis.so也需要拷貝到"/usr/lib64/php/modules/"中
"/etc/php.d/"中也要軟連接redis.so,并且要創(chuàng)建一個redis.ini文件,內(nèi)容如下:
$ cat /etc/php.d/redis.ini ; Enable redis extension module extension=redis.so
安裝phpredis還可以通過命令
pecl install redis
以上就是本次介紹的全部知識點內(nèi)容,感謝大家的閱讀和對腳本之家的支持。
相關(guān)文章
php封裝的數(shù)據(jù)庫函數(shù)與用法示例【參考thinkPHP】
這篇文章主要介紹了php封裝的數(shù)據(jù)庫函數(shù)與用法,基于thinkPHP中數(shù)據(jù)庫操作相關(guān)代碼整理簡化而來,包括針對數(shù)據(jù)庫的設(shè)置、連接、查詢及日志操作等功能,簡單實用,需要的朋友可以參考下2016-11-11
PHP合并數(shù)組+號和array_merge的區(qū)別
這篇文章主要介紹了PHP合并數(shù)組+號和array_merge的區(qū)別,PHP的數(shù)組融合一般有兩種做法,一種是直接使用加號相加,另一種則是使用array_merge函數(shù)進行相加,兩者之間有點區(qū)別,需要的朋友可以參考下2015-06-06
在mac?OS上進行多個PHP版本之間切換的實現(xiàn)方法
不同項目使用php版本可能不同,需要安裝不同版本php,本文給大家介紹了在macOS上進行多個?PHP?版本之間切換的實現(xiàn)方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-10-10
PHP大批量數(shù)據(jù)操作時臨時調(diào)整內(nèi)存與執(zhí)行時間的方法
PHP大批量數(shù)據(jù)操作時臨時調(diào)整內(nèi)存與執(zhí)行時間的方法 ,因為運行的程序會很大很慢所以需要臨時設(shè)置下。不用修改php.ini參數(shù)了。2011-04-04

