centos7.9
PHP7.4.30
在編譯PHP時會提示一些包版本不夠或者缺少某些包,一般選擇yum來安裝缺少的包,但因為是離線安裝,所以可以手動設定本地yum源。先看一下系統版本
[root@xcc ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
下載系統對應的iso映象檔案CentOS-7.9-x86_64-Everything-2009.iso
,傳到伺服器上並設定本地yum源。設定方法可以參考:https://www.cnblogs.com/haolb123/p/16553119.html
安裝完下面這些,可以減少在編譯PHP時提示的缺包問題。
yum install -y gcc gcc-c++ make cmake bison autoconf wget lrzsz
yum install -y libtool libtool-ltdl-devel
yum install -y freetype-devel libjpeg.x86_64 libjpeg-devel libpng-devel gd-devel
yum install -y python-devel patch sudo
yum install -y openssl* openssl openssl-devel ncurses-devel
yum install -y bzip* bzip2 unzip zlib-devel
yum install -y libevent*
yum install -y libxml* libxml2-devel
yum install -y libcurl* curl-devel
yum install -y readline-devel
yum install -y sqlite-devel.x86_64
附1:如果沒有系統iso映象檔案,可以直接編譯安裝,提示缺少什麼,就從https://pkgs.org/下載系統對應的包,然後手動rpm -i
安裝即可。有些包可能需要編譯安裝。
附2:單獨下載rpm包安裝時,會提示缺少依賴項等。而yum安裝時會自動安裝這個包的依賴項,所以還是建議設定本地yum源來裝。
附3:安裝完上面這些,如果是最小化安裝PHP7.4.30則可以正常通過編譯,可以直接make && make install
安裝PHP。
下載地址:https://www.php.net/downloads.php
安裝時,如果此時不指定./configure
後面的擴充套件,後期也可以手動加上。
附:指定的擴充套件越多,編譯時可能會遇到的問題越多,不要盲目的新增很多用不上的擴充套件,如果可以,建議選擇預設(最小化)安裝。
附:根據實際的web伺服器開啟適當的擴充套件,Nginx使用--enable-fpm
,Apache使用--with-apxs2
tar zxvf php-7.4.30.tar.gz
cd php-7.4.30
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbregex --enable-mbstring --with-iconv --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zip --with-bz2 --enable-gd --with-jpeg --with-readline --with-freetype --disable-fileinfo
#最小化安裝-適合nginx平臺
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-fpm
#最小化安裝-適合apache平臺(先安裝httpd,--with-apxs2指定httpd安裝位置)
./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --with-apxs2=/usr/sbin/apxs
PHP7的編譯擴充套件有些更新,參考:https://www.php.net/manual/zh/migration74.other-changes.php
因為擴充套件指定了--enable-mbstring
需要用到oniguruma
包,如果用不到可以禁用這個擴充套件--disable-mbregex
下載地址:https://pkgs.org/download/oniguruma 和 https://pkgs.org/download/oniguruma-devel
安裝
rpm -i oniguruma-devel-6.8.2-2.el7.x86_64.rpm
rpm -i oniguruma-6.8.2-2.el7.x86_64.rpm
繼續編譯PHP,提示libzip >= 0.11
因為系統映象裡的版本是0.10,需要單獨安裝,這裡下載1.2.0,因為高版本需要cmake。
下載地址:https://libzip.org/download/libzip-1.2.0.tar.gz
安裝
tar xvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
執行完後並沒有被系統識別,相當於Windows系統的環境變數一樣,讓系統識別還需要設定PKG_CONFIG_PATH
,用pkg-config
檢視libzip.pc
,發現沒有輸出,find
查詢一下,預設位置在/usr/local/lib/pkgconfig/libzip.pc
然後建立連結。
[root@xcc ~]# pkg-config --list-all|grep libzip
[root@xcc ~]# find / -name libzip.pc
/root/libzip-1.2.0/libzip.pc
/usr/local/lib/pkgconfig/libzip.pc
[root@xcc ~]# ln -sf /usr/local/lib/pkgconfig/libzip.pc /usr/lib64/pkgconfig/
[root@xcc ~]# pkg-config --list-all|grep libzip
libzip libzip - library for handling zip archives
繼續編譯PHP,這裡已經可以正常編譯通過。
繼續安裝
make
make install
從安裝包裡把組態檔拷貝到安裝目錄並重新命名,組態檔有兩個:生產環境php.ini-production
和開發環境php.ini-development
[root@xcc php-7.4.30]# cp php.ini-* /usr/local/php/etc/
[root@xcc php-7.4.30]# cd /usr/local/php/etc/
[root@xcc etc]# cp php.ini-development php.ini
[root@xcc etc]# ls
php-fpm.conf.default php-fpm.d php.ini php.ini-development php.ini-production
編輯檔案vi /etc/profile
在末尾新增
PATH=/usr/local/php/bin:$PATH
export PATH
使其立即生效source /etc/profile
[root@xcc ~]# php -v
PHP 7.4.30 (cli) (built: Nov 2 2022 17:32:45) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[root@xcc ~]# php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
filter
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
[Zend Modules]
end。