centos下升級php5.3到php5.6
檢視並刪除原有的php5.3
原文地址:http://blog.csdn.net/na_beginning/article/details/53414122
檢視原有的php版本:
php -V
- 1
- 2
檢視已經安裝的php的包:
yum list installed | grep php
- 1
- 2
可以看到如下原有的安裝包:
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
全都是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
- 1
- 2
刪除後可以確認一下是否已經完成刪除:
yum list installed | grep php
- 1
- 2
結果應該為空。
安裝php5.6的包
由於centos 6.* 原有的rpm中不包含5.6的包的資源,所以需要先安裝匯入php的安裝源:
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
- 1
- 2
然後安裝5.6相關的包:
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
- 1
- 2
全部安裝成功後確認一下:
yum list installed | grep php
- 1
- 2
結果如下:
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
重啟php-fpm:
/usr/local/php/sbin/php-fpm restart
- 1
- 2
然後執行:
php -v
- 1
- 2
應當顯示 5.6.
升級完畢。
不過存在一個疑問:
直接在伺服器執行php -v的版本是5.6,但是在nginx伺服器寫一個info.php,內容如下:
<?php
phpinfo();
?>
- 1
- 2
- 3
- 4
然後再瀏覽器訪問:http://ip:port/info.php,顯示的頁面卻還是舊的5.3版本。這個問題還沒有搞清楚。
對於上述疑問,追蹤進展為:
上面雖然刪除安裝了php的依賴包,但是舊的php版本本身沒有刪除,也就是說centos上存在兩個版本的php,升級php依賴包後,執行 php
-v 只不過系統訪問的路徑預設訪問的是5.6版本的包,但是通過其他應用,比如nginx去訪問的時候訪問的還是舊的5.2版本的php。
檢查過程如下:
執行php -v: 5.6
檢視系統所有版本的php:
find / -name php
- 1
- 2
顯示結果中可以找到下面兩個命令:
/usr/local/php/bin/php
/etc/bin/php
- 1
- 2
- 3
分別執行 /usr/local/php/bin/php -v 和 /etc/bin/php -v 可以看到,一個是5.2版本,一個是5.6版本,這就是為什麼上面php -v 看到的是5.6版本,而phpinfo看到的是5.2版本的直接原因。
根本原因:通過nginx訪問php請求,nginx轉發到127.0.0.1:9000,監聽9000埠的php-fpm接收到請求後,將請求轉交給對應的php直譯器進行處理,也就是說使用的是哪個版本的php是由php-fpm決定,而php-fpm只是php的一個補丁,通過編譯安裝php時configure時加上引數
–enable-fpm
安裝php-fpm,所以安裝php時就已經決定了php-fpm呼叫的是哪一個版本的php,如果需要改變使用的php版本,只能重新下載更新版本的php原始碼,然後重新編譯安裝帶上–enable-fpm引數,這樣才能成功改變phpinfo()顯示的版本。
重新安裝php5.6的方法參考linux安裝nginx和mysql和php.md。
另外,想要找到系統採用的當前php.ini配置檔案的話,可以通過下面的方式查詢:
find / -name php.ini
- 1
- 2
這樣可能會顯示多個php.ini路徑,然後執行如下命令可以獲取當前被系統採用的php.ini配置檔案:
php -i | grep php.ini
相關文章
- php5.6 升級至7.2.7PHP
- CentOS 7 升級到 CentOS 8CentOS
- CentOS7.5升級到CentOS 7.6CentOS
- Centos升級到openssh9.7CentOS
- Centos8升級到Centos 8 stream教程。CentOS
- CentOS 6.9 升級 glibc 2.12 到 2.17(qbit)CentOS
- Centos7 升級openssh到最高版本CentOS
- CentOS6.9下升級預設的OpenSSH操作記錄(升級到OpenSSH_7.6p1)CentOS
- CentOS 6下gcc升級的操作記錄(由預設的4.4.7升級到6.4.0版本)CentOSGC
- CentOS6.4 升級到7.0的步驟CentOS
- 從CentOS 7.0升級到7.7版本CentOS
- Centos 7升級 PHP7 到 PHP8CentOSPHP
- Centos7 openssh升級到7.9p1CentOS
- centos6.5中openssh從5.3升級到7.3CentOS
- CentOS 8 升級核心CentOS
- CentOS GCC 升級 6.0CentOSGC
- centos7 openssl升級版本到OpenSSL 1.1.1nCentOS
- Mac 下 Homestead 3.0.0 升級到 Homestead 6.3.0Mac
- centos7 核心升級CentOS
- CentOS 7核心升級教程。CentOS
- 從10.2.0.1升級到10.2.0.5操作實驗(下)
- [c++/gcc] Centos 7.9升級 gcc 4.8.5 到 gcc11 [轉]C++GCCentOS
- Linux CentOS升級安裝gitLinuxCentOSGit
- CentOs下手動升級node版本CentOS
- CentOS6.X 升級核心CentOS
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- MacOS下PHP7.1升級到PHP7.4.15MacPHP
- 升級centos7自帶的Python2.7到Python3.8CentOSPython
- Centos 7 升級通過 yum 安裝的 MySQL 5.7 到 MySQL 8.0CentOSMySql
- ccproject升級到1135Project
- mongodb單機從3.2升級到4.0.4升級MongoDB
- centos7-kernel-upgrade-核心升級CentOS
- Centos5 原始碼升級sshdCentOS原始碼
- CentOS7升級openssl1.1.1CentOS
- centos升級openssl方法及步驟CentOS
- CentOS7 升級 Git 歷程CentOSGit
- Centos6.5 離線 Openssh 升級CentOS
- CentOS 6升級預設python版本CentOSPython
- MySQL 5.7 升級到 8.0MySql