源碼安裝 PHP 7.3

本文以當前最新版本 PHP 7.3.1 演示整個源碼安裝的流程。php

下載 PHP 源碼包

訪問 PHP 官網的源碼包下載地址 http://php.net/downloads.phpmysql

image

如圖所示,PHP 源碼提供了三種壓縮格式,一般壓縮後的文件越小,意味着解壓縮須要的時間和 CPU 消耗就會更多,這裏要根據安裝 PHP 的服務器硬件狀況和帶寬選擇合適的壓縮格式,我選擇下載 php-7.3.1.tar.gznginx

下載源碼有兩種方式:c++

  1. 服務器端使用 wget 命令直接下載 。
  2. 首先下載到本地,而後經過 FTP 傳到服務器。

以第一種方法爲例,在服務器端執行:sql

wget -c http://cn2.php.net/distributions/php-7.3.1.tar.gz

點開其中一個壓縮包,右擊 China 的 cn2.php.net 複製連接地址,能夠得到另外一個下載地址,獲取方式以下圖所示:segmentfault

http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror

# 此地址的下載命令,使用 -O 重命名源碼包,不然下載後的文件名會是 mirror
wget -O php-7.3.1.tar.gz http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror

若是須要下載其餘版本,只須要修改下載地址中的版本號,例如 php-7.2.14.tar.gzbash

安裝 PHP

使用 tar 命令解壓 tar.gz 壓縮包:服務器

tar -xzvf php-7.3.1.tar.gz

安裝 PHP 須要的擴展庫php7

yum install -y libxml2 *openssl* libcurl* libjpeg* libpng* freetype* libzip* libmcrypt*

進入解壓後的 php-7.2.4 文件夾,運行 configure 可執行文件:curl

./configure --prefix=/mnt/php7 --with-mysqli --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-simplexml --enable-xml --disable-rpath --enable-bcmath --enable-soap --enable-zip --with-curl --enable-fpm --with-fpm-user=www --with-fpm-group=www --enable-mbstring --enable-sockets --with-gd --with-openssl --with-mhash --enable-opcache --disable-fileinfo

image

若是最後顯示以上界面,說明已經成功安裝。


因爲我測試的是一個新的服務器,因此依次遇到了如下錯誤,沒有出現問題能夠跳過這部分:

錯誤1:

configure: error: in `/root/php-7.3.1':
configure: error: no acceptable C compiler found in $PATH
# 缺乏 c 編譯器,安裝 GCC
yum install gcc

錯誤2:

checking for libzip... configure: error: system libzip must be upgraded to version >= 0.11
# 查看 yum 安裝的 libzip 版本
yum list installed | grep libzip

# 發現 yum 安裝的 libzip 版本太低,卸載低版本
yum remove libzip*

源碼安裝 libzip

# 源碼編譯安裝 libzip 最新版
# libzip 官網地址:https://libzip.org
wget https://nih.at/libzip/libzip-1.5.1.tar.gz
tar -zxvf libzip-1.5.1.tar.gz
cd libzip-1.5.1
## 查看 INSTALL.md 其中有安裝提示
mkdir build
cd build
cmake ..
make
make test
make install

上述命令在執行 cmake .. 時報錯,使用 yum 安裝了 gcc-c++

yum -y install gcc-c++

又從新源碼編譯安裝了了 Cmake,參考這篇文章

錯誤3:

error: off_t undefined; check your library configuration
# 添加搜索路徑到配置文件
echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
# 更新配置
ldconfig -v

此錯誤詳細解釋參考 https://segmentfault.com/q/10... 中 @代碼狗 的回答。


編譯和安裝

make && make install

配置

進入 /mnt/php7/sbin,啓動 php-fpm

[root@localhost sbin]# ./php-fpm
[15-Jan-2019 03:32:21] ERROR: failed to open configuration file '/mnt/php7/etc/php-fpm.conf': No such file or directory (2)
[15-Jan-2019 03:32:21] ERROR: failed to load configuration file '/mnt/php7/etc/php-fpm.conf'
[15-Jan-2019 03:32:21] ERROR: FPM initialization failed

解決辦法:

# 進入 /mnt/php7/etc,複製 php-fpm 的配置文件
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf

# 進入 /mnt/php7/etc/php-fpm.d,複製 php-fpm 的子配置文件:
[root@localhost php-fpm.d]# cp www.conf.default www.conf

在運行 php-fpm 前,還須要修改其子配置文件中的用戶和用戶組,以 nginx 爲例,編輯 /mnt/php7/etc/php-fpm.d 文件:

user = nginx
group = nginx

至此就能夠啓動 php-fpm 了。

在命令行下運行 php,須要將可執行文件複製到環境變量下:

cp /mnt/php7/bin/php /usr/local/bin/php

# 命令行下查看 php 版本
php -v
相關文章
相關標籤/搜索