PHP5.6.40,7.0,7.1 版本安裝部署踩過的坑分享

一 服務器OS和MYSQL,NGINX版本如下:

centos 7.2

mysql5.7 

nginx1.15

php7.0

二  php7.0 安裝

centos,mysql nginx 安裝省略

主要說 php安裝 

A 首先安裝的通過yum install(默認安裝目錄,使用tar包安裝,安裝後的各個文件路徑不同而已,這裏不贅述) 安裝後發現 連接不了數據庫缺少驅動,現象 could not find driver,查看庫文件默認目錄/usr/lib64/php/modules 沒有pdo-mysql.so, 然後使用 php-m 命令查看 pdo-mysql.so 是否加載了,再然後沒有加載這個庫文件(庫文件中沒有,pdo-mysql.so 一般都不可能加載的)。

B 試了好多方法 說再yum install pdo pdo-mysql php-pdo 修改php.ini 等,無果。最後下載 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 

然後解壓
tar -zxvf PDO_MYSQL-1.0.2.tgz

進入解壓後的目錄 cd PDO_MYSQL-1.0.2,然後執行php 命令 phpize,如果 報錯,沒裝什麼就使用yum安裝什麼就行了。

ok 後 再執行 ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql/ 

第一個--with 是 /usr/local/bin/php-config

第二個--with 是mysql安裝路徑

執行完成,make編譯一下,沒問題繼續make install 完成,會生成一個文件夾,裏面有pdo_mysql.so這就是我們要的東西。

問題就出來 make 編譯時候 報各種錯誤 ,說一些方法缺失參數等,兼容性問題,除非修改c++ 源碼了。經過多次折騰無果。放棄改做法。

C 安裝 php5.7.40 發現又缺少gd.so  圖像處理庫文件 ,現象是圖形驗證碼顯示不了。經過折騰最後也放棄了。

D 最後安裝的 php7.0 在朋友的一再鼓勵下安裝並且給了指導。安裝過程如下:

1 使用以下命令將yum倉庫包升級更換成PHP7的rpm包。

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

2 先使用yum命令安裝基本PHP組件,以後要用到啥再安裝啥。

yum -y install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64

再安裝PHP-fpm(進程管理器,提供PHP進程管理方式,可以有效控制內存和進程、平滑重載PHP配置)

yum -y install php70w-fpm php70w-opcache

安裝完之後啓動php-fpm

systemctl start php-fpm

查看版本以檢測是否安裝成功 php-v

E 檢測PHP是否能與Nginx互通

詳看參考 php7.0 安裝,該步驟沒有遇到坑。

F 檢測PHP是否能與mysql互通 (坑在此)

詳看參考 php7.0 安裝 遇到了坑,並且也沒有報錯 重啓 php-fpm 和nginx 服務 還是連不上數據庫 然後通過 php -i 或者 php -v 發現警告信息 如下 :

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' 
- /usr/lib64/php/modules/mysqli.so: symbol mysql_change_user, 
version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' 
- /usr/lib64/php/modules/pdo_mysql.so: symbol mysql_options, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference in Unknown on line 0
PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )

網上找了很久無果 最後都絕望了 包括朋友也是 ,再然後 我抱着試一試的態度 百度搜索了 mysql_options, version libmysqlclient_18 not defined in file libmysqlclient.so.18 看到一篇文章

重新安裝mysql 庫

yum install mysql-libs -y

然後 再 php -v 沒有警告了 並且能連上數據庫了。

三 總結

1 php和php-fpm 安裝 需要一些庫文件 很可能 就沒有安裝到位,並且各種奇怪的錯誤,需要冷靜,不放棄,多嘗試。

2 php ,php-fpm ,nginx ,mysql 版本繁多,最好使用常用文檔版本不要一味追逐最新版本,可能不兼容等導致採坑不斷。

3 使用docker 安裝

4 遇到這類問題最好找熟悉的朋友同事給予積極指導等。

 

備註

1 php7.0 安裝 https://www.cnblogs.com/pandawan/p/11100311.html

https://blog.csdn.net/weixin_34174322/article/details/91958876

3 docker 安裝 nignx+php7.3+mysql 環境搭建鏈接:

http://note.youdao.com/noteshare?id=7a3d1b4ab11ba81f722f9a73cc39db91&sub=2C11979406534A0A812367F70AE25AA7

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章