溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決

發(fā)布時(shí)間:2021-09-03 10:18:34 來源:億速云 閱讀:144 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

最近試了一下PHP7,在編譯和支持MySQL上都遇到一些問題,相信不少同學(xué)也同樣遇到,所以在這里聊一下這個(gè)過程。簡單來講編譯PHP7只需要3步:

1、./buildconf --force
2、./configure
3、make && make install

1、3步,都沒啥好管的,configure是編譯的關(guān)鍵,涉及到PHP對(duì)一些庫的支持,這里我們使用最小的支持,包括MySQL:

curl
gd
fpm
mysqlnd

之所以把curl和gd拿來說,目的是要搞清楚,這些三方庫在編譯PHP之前得安裝好,可以直接使用yum安裝在默認(rèn)位置,也可以編譯安裝到指定位置,yum安裝后,編譯時(shí)不用指定庫的安裝位置,關(guān)于安裝這些庫,可以搜索一下有很多。下面看看基本的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,相信不用多說,用它來支持PHP是一個(gè)比較好的選擇,PHP5.3.3開始就已經(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í)間,不知道從哪一版本開始,PHP不在希望使用mysql的庫來支持mysql的連接,啟用了mysqlnd來支持,聽說比libmysql要快很多,PHP5.x還可以使用libmysql,PHP7貌似已經(jīng)取消了支持,編譯都沒有了--with-mysql參數(shù),只支持--with-mysqli和--with-pdo-mysql,可以通過查看configure的參數(shù)來知道:

./configure -help | grep mysql

CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決

可以看到,PHP希望使用mysqlnd來支持MySQL,所以參數(shù)可以這樣寫:

--enable-mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd

mysqlnd是不需要mysql支持的,所以不用先安裝好mysql一樣可以編譯通過,啟動(dòng)php-fpm,查看一下phpinfo,能看到mysqlnd和pdo_mysql表示php已經(jīng)可以支持mysql了(這里用的是pdo,mysqli同理)

CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決

CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決

幾個(gè)問題

編譯問題:cc: Internal error: Killed (program cc1)

這個(gè)問題是第一次遇到,原來是我的阿里云服務(wù)器關(guān)掉了swap,內(nèi)存不夠用,就報(bào)了這個(gè)錯(cuò)。 解決辦法很簡單,configure時(shí)加上--disable-fileinfo參數(shù)就可以了。

PHP報(bào)找不到mysql服務(wù)

正如它所說,確實(shí)沒找到,看看phpinfo中pdo_mysql.default_socket項(xiàng)

CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決

mysql.sock在哪里,再看一下mysql.sock的真正位置,使用命令:ps -ef|grep mysql查看:

CentOS下PHP7的編譯安裝及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支持的庫更多,可以再次編譯,在configure時(shí)把需要的支持加上,就是--with-xxx這中,記得如果是三方的,要先安裝這些庫才行哦。

以上是“CentOS下PHP7的編譯安裝及MySQL的支持和一些常見問題如何解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI