linux下編譯安裝php 7.0.32

本次編譯安裝php,遇到許多坑,在此記錄,希望能幫到大家

本次編譯安裝7.0.32版本,下載、解壓略過
1、編譯之前的步驟 .configure
./configure 
--prefix=/usr/local/php-7.0.32 #php安裝目錄
--with-mhash #mhash算法的擴展
--with-openssl #openssl的支持,加密傳輸時用到的
--with-config-file-path=/usr/local/php-7.0.32/etc #指定php.ini位置
--disable-short-tags #禁用php短標籤
--enable-fpm #打上PHP-fpm 補丁後纔有這個參數,CGI方式安裝的啓動程序
--with-fpm-user=php-fpm #未知,猜的
--with-fpm-group=php-fpm #未知,猜的
--enable-zip #支持zip
--with-gd #gk庫
--enable-ftp #允許ftp
--with-curl #允許curl
--with-xsl #打開XSLT 文件支持,擴展了libXML2庫 ,需要libxslt軟件
--with-jpeg-dir #打開對jpeg圖片的支持
--with-png-dir  #打開對png圖片的支持
--with-zlib  #打開對zlib的支持
--enable-inline-optimization #優化線程
--with-xmlrpc #打開xml-rpc的c語言
--with-gettext #打開gnu 的gettext 支持,編碼庫用到
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--with-mysqli=/usr/bin/mysql_config #mysqli擴展
--with-pdo-mysql=/usr/bin/mysql_config #pdo擴展
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

重點看上面標出的步驟,不知道從哪一版本開始,PHP不在希望使用mysql的庫來支持mysql的連接,啓用了mysqlnd來支持,編譯都沒有了--with-mysql參數,只支持--with-mysqli和--with-pdo-mysql
也就是說
不需要配置mysql_config地址,直接上代碼【在這裏卡了很久,一直報各種錯】

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

所以我安裝的第一步【注意看上面參數解釋,路徑要換成自己的】

./configure --prefix=/usr/local/php-7.0.32 --with-mhash --with-openssl --with-config-file-path=/usr/local/php-7.0.32/etc --disable-short-tags --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --enable-zip --with-gd --enable-ftp --with-curl --with-xsl --with-jpeg-dir --with-png-dir --with-zlib --enable-inline-optimization --with-xmlrpc --with-gettext --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
2、make make install 編譯安裝成功
3、開啓php-fpm [/usr/local/php-7.0.32/sbin/php-fpm -R ]
好了,到這裏又出錯了

我的php安裝在/usr/local/php-7.0.32下,以下均以此地址演示,新手別直接拷地址

  • 1、找不到php-fpm.conf
[03-Dec-2018 22:25:53] ERROR: failed to open configuration file '/usr/local/etc/php-fpm.conf': No such file or directory (2)
[03-Dec-2018 22:25:53] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[03-Dec-2018 22:25:53] ERROR: FPM initialization failed

解決辦法:
進入安裝目錄下的 etc文件夾 將php-fpm.conf.default 拷貝一份成php-fpm.conf.default,再軟連接到/usr/local/etc下

cp php-fpm.conf.default php-fpm.conf
ln php-fpm.conf /usr/local/etc/php-fpm.conf
  • 2、再嘗試開啓fpm,在php-fpm.d下找不到.conf的文件,所以跟上一步驟一樣,要將默認文件的後綴default去掉
[03-Dec-2018 22:29:12] WARNING: Nothing matches the include pattern '/usr/local/php-7.0.32/etc/php-fpm.d/*.conf' from /usr/local/etc/php-fpm.conf at line 125.
[03-Dec-2018 22:29:12] ERROR: No pool defined. at least one pool section must be specified in config file

解決代碼:

cd /usr/local/php-7.0.32/etc/php-fpm.d
cp www.conf.default www.conf
  • 3、最後一個
[03-Dec-2018 22:32:05] ERROR: [pool www] cannot get uid for user 'php-fpm'
[03-Dec-2018 22:32:05] ERROR: FPM initialization failed

這個我認爲是php-fpm的控制權限問題
解決辦法:
在上一步的 www.conf中 有個user = vagrant 跟 group = vagrant 改成當前系統的用戶名

clipboard.png

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