CentOS下PHP7的編譯安裝及MySQL的支持和一些常見(jiàn)問(wèn)題的解決辦法
最近試了一下PHP7,在編譯和支持MySQL上都遇到一些問(wèn)題,相信不少同學(xué)也同樣遇到,所以在這里聊一下這個(gè)過(guò)程。簡(jiǎn)單來(lái)講編譯PHP7只需要3步:
1、./buildconf --force
2、./configure
3、make && make install
1、3步,都沒(méi)啥好管的,configure是編譯的關(guān)鍵,涉及到PHP對(duì)一些庫(kù)的支持,這里我們使用最小的支持,包括MySQL:
curl
gd
fpm
mysqlnd
之所以把curl和gd拿來(lái)說(shuō),目的是要搞清楚,這些三方庫(kù)在編譯PHP之前得安裝好,可以直接使用yum安裝在默認(rèn)位置,也可以編譯安裝到指定位置,yum安裝后,編譯時(shí)不用指定庫(kù)的安裝位置,關(guān)于安裝這些庫(kù),可以搜索一下有很多。下面看看基本的configure
./configure --prefix=/apps/php/php7.0 --enable-mbstring --with-curl --with-gd --with-config-file-path=/apps/php/php7.0/etc/ --
enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd
PHP-FPM
關(guān)于fpm,相信不用多說(shuō),用它來(lái)支持PHP是一個(gè)比較好的選擇,PHP5.3.3開(kāi)始就已經(jīng)內(nèi)置了php-fpm,所以PHP7里當(dāng)然也有,只需要--enable-fpm一下就可以了
php-fpm參數(shù):
--start 啟動(dòng)
--stop 強(qiáng)制終止
--quit 平滑終止
--restart 重啟
--reload 重新平滑加載php的php.ini
--logrotate 重新啟用log文件
MySQL支持
重點(diǎn)講一下這個(gè),因?yàn)樵谒厦婊艘稽c(diǎn)時(shí)間,不知道從哪一版本開(kāi)始,PHP不在希望使用mysql的庫(kù)來(lái)支持mysql的連接,啟用了mysqlnd來(lái)支持,聽(tīng)說(shuō)比libmysql要快很多,PHP5.x還可以使用libmysql,PHP7貌似已經(jīng)取消了支持,編譯都沒(méi)有了--with-mysql參數(shù),只支持--with-mysqli和--with-pdo-mysql,可以通過(guò)查看configure的參數(shù)來(lái)知道:
./configure -help | grep mysql
可以看到,PHP希望使用mysqlnd來(lái)支持MySQL,所以參數(shù)可以這樣寫(xiě):
--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
mysqlnd是不需要mysql支持的,所以不用先安裝好mysql一樣可以編譯通過(guò),啟動(dòng)php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已經(jīng)可以支持mysql了(這里用的是pdo,mysqli同理)
幾個(gè)問(wèn)題
編譯問(wèn)題:cc: Internal error: Killed (program cc1)
這個(gè)問(wèn)題是第一次遇到,原來(lái)是我的阿里云服務(wù)器關(guān)掉了swap,內(nèi)存不夠用,就報(bào)了這個(gè)錯(cuò)。 解決辦法很簡(jiǎn)單,configure時(shí)加上--disable-fileinfo參數(shù)就可以了。
PHP報(bào)找不到mysql服務(wù)
正如它所說(shuō),確實(shí)沒(méi)找到,看看phpinfo中pdo_mysql.default_socket項(xiàng)
mysql.sock在哪里,再看一下mysql.sock的真正位置,使用命令:ps -ef|grep mysql查看:
明顯不在一個(gè)位置上,我的正確位置是:/var/lib/mysql/mysql.sock
所以,修改一下php.ini,找到pdo_mysql.default_socket,改為你的實(shí)際位置,重啟一下php-fpm,很不幸,雖然php.ini有這個(gè)配置,修改后,竟然不行,最好是編譯的時(shí)候,指定mysql.socket的位置:
--with-mysql-sock=/var/lib/mysql/mysql.sock
如果還不行,可以到/tmp目錄下建立一個(gè)mysql.sock的軟鏈接:
ln -s /var/lib/mysql/mysql.sock mysql.sock
再重啟一次php-fpm,相信已經(jīng)正常運(yùn)行了。如果需要PHP支持的庫(kù)更多,可以再次編譯,在configure時(shí)把需要的支持加上,就是--with-xxx這中,記得如果是三方的,要先安裝這些庫(kù)才行哦。
- Centos 安裝 PHP7.4 和 Nginx的操作方法
- centos7利用yum安裝lnmp的教程(linux+nginx+php7.1+mysql5.7)
- 詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud
- CentOS 7.2 下編譯安裝PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法詳解(mini版本)
- CentOS 7.3.1611編譯安裝Nginx1.10.3+MySQL5.7.16+PHP7.1.2
- CentOS 7.2.1511 編譯安裝Nginx1.10.1+MySQL5.7.14+PHP7.0.11
- Centos7 安裝 PHP7最新版的詳細(xì)教程
- CentOS 7下部署php7.1和開(kāi)啟MySQL擴(kuò)展的方法教程
- centos6.6 下 安裝 php7 + nginx環(huán)境的方法
相關(guān)文章
php指定函數(shù)參數(shù)默認(rèn)值示例代碼
在php編程中,為自定義函數(shù)設(shè)定默認(rèn)值,當(dāng)用戶調(diào)用該函數(shù)時(shí),如果不給參數(shù)指定值,參數(shù)會(huì)用默認(rèn)值頂替,下面看例子2013-12-12destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法
這篇文章主要介紹了destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法,需要的朋友可以參考下2014-06-06laravel添加前臺(tái)跳轉(zhuǎn)成功頁(yè)面示例
今天小編就為大家分享一篇laravel添加前臺(tái)跳轉(zhuǎn)成功頁(yè)面示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php中關(guān)于socket的系列函數(shù)總結(jié)
這篇文章主要介紹了php中關(guān)于socket的系列函數(shù)總結(jié),本文列舉了所有關(guān)于PHP語(yǔ)言中使用socket相關(guān)服務(wù)的一些函數(shù),需要的朋友可以參考下2015-05-05PHP驗(yàn)證碼語(yǔ)言包預(yù)警信息通知總結(jié)示例
這篇文章主要為大家介紹了PHP驗(yàn)證碼語(yǔ)言包預(yù)警信息通知總結(jié)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08php數(shù)據(jù)庫(kù)的增刪改查 php與javascript之間的交互
這篇文章主要為大家詳細(xì)介紹了php數(shù)據(jù)庫(kù)的增刪改查,以及php與javascript之間的交互,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08