聊聊這兩天在linux安裝PHP7遇到的坑,真的是坑死人不償命啊


前情摘要:

這兩天要在虛擬機上部署項目,用於測試在linux上項目效果怎樣,然后這兩天就一直在部署apache+mysql+php

其實部署還是很簡單的具體的apache和mysql部署方法請看其他兩篇博文:

apache:http://www.cnblogs.com/sunshine-H/p/8110608.html

mysql:http://www.cnblogs.com/sunshine-H/p/8109403.html

PHP在我安裝apache的時候就一起安裝了,但是當我

#php -v

查看php版本的時候,卻發現php是5.6版本的!!!

那這就尷尬了,我的項目都是基於php7去開發的。沒辦法只能把php5.6卸載了,重新安裝php7 lor!

第一步:卸載舊版的PHP

第一個坑來了!

當使用

#yum remove php

確實提示卸載完成了,但是!

在apache部署目錄下寫個phpinfo.php

<?php

  phpinfo()

?>

在瀏覽器打開localhost/phpinfo.php一看,竟然還提示php是5.6版本的,然后就有小伙伴說,你還沒重啟apache服務啊,好吧我重啟下

#systemctl restart httpd

再次打開一看,那個尷尬啊!還是存在,具體的解決辦法看我另一篇博文,就不在這里贅述:

http://www.cnblogs.com/sunshine-H/p/8117105.html

第二步:開始安裝PHP7

①yum安裝:

這里不得不說,對於初接觸linux的人來說yum源也是個麻煩的事,在你使用yum命令install軟件時,提示下最好經常更新yum源

#yum -y update

然后執行如下命令安裝epel

#yum -y install epel-release

選擇php的yum源

// 更換rpm源,請根據自己的centos版本選擇相應的rpm源進行安裝

// Centos 5.X:

#rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpmCentOs 6.x:

#rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

// CentOs 7.X:

#rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm

#rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

開始安裝

#yum install php70w

當你安裝完了,安全沒事啊,別着急

第二個坑又來了!

當你想對mysql進行連接的時候,這時你發現你需要安裝擴展啊,好我們執行擴展安裝命令

#yum install php-mysql

如果小伙伴完全卸載舊版php的話基本不會遇到這個坑的,但是不排除部分小伙伴還是會遇到,報錯如下:

php70w-common conflicts with php-common-5.4.16

當時遇到這個問題我是絕望的,為什么?因為無論我用yum卸載還是rpm處理都沒法刪掉php-common-5.4.16這個毒瘤!

后來發現刪不了就不刪了,既然那些擴展是依賴php的版本選擇性安裝的,那就換個思路去處理好了,還是上面那個安裝mysql拓展的命令

解決辦法:yum install php70w-mysql

你會發現,咦!竟然可以安裝了,沒錯,就是這么簡單,但是卻浪費我幾個小時。

第三步:安裝依賴包

下面提供一些常用的需要安裝的依賴包:

 

第四步:部署項目

部署項目也沒什么好說的了,直接說我遇到的坑吧。

第三個坑!請看下圖:

Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50631 in /XXX(某某目錄)/wp-db.php on line 1520

雖然是警告,但是有的界面會因此打不開,甚是頭疼,前不久用的是騰訊雲服務器同樣的部署方式並沒有出現這個警告,一頭霧水。

使用:

php -i|grep Client  

查詢當前Client 版本,結果如下:

Client API version => 5.6.31
Client API library version => 5.6.31
Client API header version => 5.5.47-MariaDB
Client API version => 5.6.31

好吧,出現了一個異類!!

據某大牛說,版本不兼容,需升級MariaDB版本至少到5.6.31或許可以解決。我的系統是CentOS7.2版本,眾所周知,CentOS從7.x系列版本開始拋棄了MySQL,缺省安裝的是MariaDB,雖然MariaDB兼容MySQL,但是我還是比較喜歡MySQL,所以我給服務器強制安裝了MySQL,也希望一直用下去,對於這個情況,升級MariaDB這條路是不能走了。考慮當前安裝的是php-mysql驅動,而當前的php版本比較新,想到這個奇葩是不是因為驅動版本較低造成的,於是嘗試以下操作:

# yum remove php-mysql

 

# yum install php70w-mysql     //注意這里的70w是我自己的php7的版本,上面也有提到過,自己注意吧,換成自己的就好

先卸載較低版本的 php-mysql驅動,再升級安裝新版的php-mysqlnd驅動。

 

OK,再重啟下httpd和mysql服務:

# systemctl restart httpd

# systemctl restart mysqld

然后重新試下打開項目,完美,可以了。

-----------------------------------------------------------------小小分割線:20180102-----------------------------------------------------------------------

后面遇到什么問題都會繼續在這里更新!

祝大家新年快樂!

歡迎大家到下方留言!

 

 

 

 

  1. php -i|grep Client  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM