CentOS下PHP7的編譯安裝及MySQL的支援和一些常見問題的解決辦法_php執行個體

來源:互聯網
上載者:User

最近試了一下PHP7,在編譯和支援MySQL上都遇到一些問題,相信不少同學也同樣遇到,所以在這裡聊一下這個過程。簡單來講編譯PHP7隻需要3步:

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

1、3步,都沒啥好管的,configure是編譯的關鍵,涉及到PHP對一些庫的支援,這裡我們使用最小的支援,包括MySQL:

curl
gd
fpm
mysqlnd

之所以把curl和gd拿來說,目的是要搞清楚,這些三方庫在編譯PHP之前得安裝好,可以直接使用yum安裝在預設位置,也可以編譯安裝到指定位置,yum安裝後,編譯時間不用指定庫的安裝位置,關於安裝這些庫,可以搜尋一下有很多。下面看看基本的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

關於fpm,相信不用多說,用它來支援PHP是一個比較好的選擇,PHP5.3.3開始就已經內建了php-fpm,所以PHP7裡當然也有,只需要--enable-fpm一下就可以了

php-fpm參數:

--start 啟動
--stop 強制終止
--quit 平滑終止
--restart 重啟
--reload 重新平滑載入php的php.ini
--logrotate 重新啟用log檔案

MySQL支援

重點講一下這個,因為在它上面花了一點時間,不知道從哪一版本開始,PHP不在希望使用mysql的庫來支援mysql的串連,啟用了mysqlnd來支援,聽說比libmysql要快很多,PHP5.x還可以使用libmysql,PHP7貌似已經取消了支援,編譯都沒有了--with-mysql參數,只支援--with-mysqli和--with-pdo-mysql,可以通過查看configure的參數來知道:

./configure -help | grep mysql 

可以看到,PHP希望使用mysqlnd來支援MySQL,所以參數可以這樣寫:

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

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


幾個問題

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

這個問題是第一次遇到,原來是我的阿里雲伺服器關掉了swap,記憶體不夠用,就報了這個錯。 解決辦法很簡單,configure時加上--disable-fileinfo參數就可以了。

PHP報找不到mysql服務

正如它所說,確實沒找到,看看phpinfo中pdo_mysql.default_socket項


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

明顯不在一個位置上,我的正確位置是:/var/lib/mysql/mysql.sock

所以,修改一下php.ini,找到pdo_mysql.default_socket,改為你的實際位置,重啟一下php-fpm,很不幸,雖然php.ini有這個配置,修改後,竟然不行,最好是編譯的時候,指定mysql.socket的位置:

--with-mysql-sock=/var/lib/mysql/mysql.sock

如果還不行,可以到/tmp目錄下建立一個mysql.sock的軟連結:

ln -s /var/lib/mysql/mysql.sock mysql.sock 

再重啟一次php-fpm,相信已經正常運行了。如果需要PHP支援的庫更多,可以再次編譯,在configure時把需要的支援加上,就是--with-xxx這中,記得如果是三方的,要先安裝這些庫才行哦。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.