查看并刪除原有的php5.3
php -V
查看已經(jīng)安裝的php的包:
yum list installed | grep php
可以看到如下原有的安裝包:
php-common.x86_64 0:5.3.3-38.el6
php-gd.x86_64 0:5.3.3-38.el6
php-ldap.x86_64 0:5.3.3-38.el6
php-mysql.x86_64 0:5.3.3-38.el6
php-odbc.x86_64 0:5.3.3-38.el6
php-pdo.x86_64 0:5.3.3-38.el6
php-pear.noarch 1:1.9.4-4.el6
php-pecl-apc.x86_64 0:3.1.9-2.el6
php-pecl-memcache.x86_64 0:3.0.5-4.el6
php-pgsql.x86_64 0:5.3.3-38.el6
php-soap.x86_64 0:5.3.3-38.el6
php-xml.x86_64 0:5.3.3-38.el6
php-xmlrpc.x86_64 0:5.3.3-38.el6
全都是5.3.3-38.el6版本的普监。
如果不刪除原有的5.3的包俱饿,安裝php5.6的包時會報沖突的錯誤。
刪除5.3的包:
yum remove php.cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mysql.x86_64 php-odbc.x86_64 php-pdo.x86_64 php-pear.noarch php-pecl-apc.x86_64 php-pecl-memcache.x86_64 php-pgsql.x86_64 php-soap.x86_64 php-xml.x86_64 php-xmlrpc.x86_64
刪除后可以確認(rèn)一下是否已經(jīng)完成刪除:
yum list installed | grep php
結(jié)果應(yīng)該為空沮脖。
安裝php5.6的包
由于centos 6.* 原有的rpm中不包含5.6的包的資源金矛,所以需要先安裝導(dǎo)入php的安裝源:
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
然后安裝5.6相關(guān)的包:
yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-odbc.x86_64 php56w-xml.x86_64 php56w-xmlrpc.x86_64 php56w-soap.x86_64
全部安裝成功后確認(rèn)一下:
yum list installed | grep php
結(jié)果如下:
php56w.x86_64 5.6.27-1.w6 @webtatic
php56w-cli.x86_64 5.6.27-1.w6 @webtatic
php56w-common.x86_64 5.6.27-1.w6 @webtatic
php56w-gd.x86_64 5.6.27-1.w6 @webtatic
php56w-ldap.x86_64 5.6.27-1.w6 @webtatic
php56w-mbstring.x86_64 5.6.27-1.w6 @webtatic
php56w-mysql.x86_64 5.6.27-1.w6 @webtatic
php56w-odbc.x86_64 5.6.27-1.w6 @webtatic
php56w-pdo.x86_64 5.6.27-1.w6 @webtatic
php56w-soap.x86_64 5.6.27-1.w6 @webtatic
php56w-xml.x86_64 5.6.27-1.w6 @webtatic
php56w-xmlrpc.x86_64 5.6.27-1.w6 @webtatic
重啟php-fpm:
/usr/local/php/sbin/php-fpm restart
然后執(zhí)行:
php -v
應(yīng)當(dāng)顯示 5.6.
升級完畢。
不過存在一個疑問:
直接在服務(wù)器執(zhí)行php -v的版本是5.6勺届,但是在nginx服務(wù)器寫一個info.php驶俊,內(nèi)容如下:
<?php
phpinfo();
?>
然后再瀏覽器訪問:http://ip:port/info.php,顯示的頁面卻還是舊的5.3版本免姿。這個問題還沒有搞清楚饼酿。
對于上述疑問,追蹤進(jìn)展為:
上面雖然刪除安裝了php的依賴包胚膊,但是舊的php版本本身沒有刪除故俐,也就是說centos上存在兩個版本的php,升級php依賴包后紊婉,執(zhí)行 php -v 只不過系統(tǒng)訪問的路徑默認(rèn)訪問的是5.6版本的包药版,但是通過其他應(yīng)用,比如nginx去訪問的時候訪問的還是舊的5.2版本的php喻犁。
檢查過程如下:
執(zhí)行php -v: 5.6
查看系統(tǒng)所有版本的php:
find / -name php
顯示結(jié)果中可以找到下面兩個命令:
/usr/local/php/bin/php
/etc/bin/php
分別執(zhí)行 /usr/local/php/bin/php -v 和 /etc/bin/php -v 可以看到槽片,一個是5.2版本,一個是5.6版本肢础,這就是為什么上面php -v 看到的是5.6版本还栓,而phpinfo看到的是5.2版本的直接原因。
根本原因:通過nginx訪問php請求传轰,nginx轉(zhuǎn)發(fā)到127.0.0.1:9000蝙云,監(jiān)聽9000端口的php-fpm接收到請求后,將請求轉(zhuǎn)交給對應(yīng)的php解釋器進(jìn)行處理路召,也就是說使用的是哪個版本的php是由php-fpm決定勃刨,而php-fpm只是php的一個補(bǔ)丁,通過編譯安裝php時configure時加上參數(shù) –enable-fpm 安裝php-fpm股淡,所以安裝php時就已經(jīng)決定了php-fpm調(diào)用的是哪一個版本的php身隐,如果需要改變使用的php版本,只能重新下載更新版本的php源代碼唯灵,然后重新編譯安裝帶上–enable-fpm參數(shù)贾铝,這樣才能成功改變phpinfo()顯示的版本。
重新安裝php5.6的方法參考linux安裝nginx和mysql和php.md埠帕。
另外垢揩,想要找到系統(tǒng)采用的當(dāng)前php.ini配置文件的話,可以通過下面的方式查找:
find / -name php.ini
這樣可能會顯示多個php.ini路徑敛瓷,然后執(zhí)行如下命令可以獲取當(dāng)前被系統(tǒng)采用的php.ini配置文件:
php -i | grep php.ini