1、安装依赖包
yum -y install gcc gcc-c++ glibc automake autoconf libtool make
rpm -q gcc gcc-c++ glibc automake autoconf libtool make |wc -l
yum -y install libxslt-devel libjpeg libjpeg-devel libpng libpng-devel
rpm -q libxslt-devel libjpeg libjpeg-devel libpng libpng-devel | wc -l
yum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel
rpm -q freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel |wc -l
yum -y install glibc glibc-devel glib2 bzip2-devel ncurses ncurses-devel
rpm -q glibc glibc-devel glib2 bzip2-devel ncurses ncurses-devel | wc -l
yum -y install curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel
rpm -q curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel | wc -l
yum -y install openssl openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel
rpm -q openssl openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel |wc -l
yum -y install freetype-devel libicu-devel libxslt-devel
rpm -q freetype-devel libicu-devel libxslt-devel | wc -l
yum -y install systemd-devel
rpm -q systemd-devel |wc -l
yum -y install oniguruma oniguruma-devel
rpm -q oniguruma oniguruma-devel
rpm -q oniguruma oniguruma-devel |wc -l
2、gmp扩展
yum -y install gmp-devel
rpm -q gmp-devel
如果安装不了 oniguruma,请使用:
# 方案一:
yum -y install
yum -y install
#方案二:
yum -y install
yum -y install
3、升级 cmake
cd /opt
yum -y install wget
yum remove cmake -y
wget -c
tar xf cmake-3.21.0-linux-x86_64.tar.gz
mv cmake-3.21.0-linux-x86_64 /usr/local/cmake
编辑并配置
cat >/etc/profile.d/cmake.sh<<hanyw
export CMAKE_HOME=/usr/local/cmake
export PATH=\$CMAKE_HOME/bin:\$PATH
hanyw
# 执行
source /etc/profile.d/cmake.sh
cmake -version
4、安装 libzip
cd /opt
wget -c --no-check-certificate
tar xf libzip-1.8.0.tar.gz
cd libzip-1.8.0
mkdir build && cd build;echo $?
cmake ..;echo $?
make install;echo $?
export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig/":$PKG_CONFIG_PATH
5、下载php源码包,编译安装
groupadd php-fpm
useradd -s /sbin/nologin -g php-fpm -M php-fpm
cd /opt
wget -c
tar xf php-8.1.3.tar.gz
编译参数
./configure –help指令可查看编译版本的所有编译参数。
cd php-8.1.3 ; ./configure --help
本次编译参数如下。
./configure \
--prefix=/usr/local/php8 \
--with-config-file-path=/usr/local/php8 \
--with-config-file-scan-dir=/usr/local/php8/php.d \
--enable-mysqlnd \
--with-mysqli \
--with- PDO -mysql \
--enable-gd \
--with-gmp \
--with-jpeg \
--with-iconv \
--with-zlib \
--with-zip \
--with- openssl \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--with-freetype \
--enable-opcache \
--enable-fpm \
--with-fpm-user=php-fpm \
--with-fpm-group=php-fpm \
--with-fpm-systemd \
--disable-fileinfo ; echo $?
出现如下界面,表述预编译成功。
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
Thank you for using PHP.
0
执行编译:
编译完毕之后,我们进行下一步
make -j 4 && make install ; echo $?
接下来需要等待大约10-20分钟 这个根据我们的服务器而定 如果觉得慢我们可以使用
make -j 16 ; echo $?
出现如下界面的提示字样,表示指令执行成功。
Build complete.
Don't forget to run 'make test'.
0
具体可参考如下指令查看CPU的核心数。
[ root @itop-test php-8.1.3]# lscpu |grep ' CPU (s):'
CPU(s): 16
[root@itop-test php-8.1.3]# grep -c 'cpu cores' /proc/cpuinfo
16
make install ; echo $?
输出过程如下。
[root@itop-test php-8.1.3]# make install ;echo $?
Installing shared extensions: /usr/local/php8/lib/php/extensions/no-debug-non-zts-20210902/
Installing PHP CLI binary: /usr/local/php8/bin/
Installing PHP CLI man page: /usr/local/php8/php/man/man1/
Installing PHP FPM binary: /usr/local/php8/sbin/
Installing PHP FPM defconfig: /usr/local/php8/etc/
Installing PHP FPM man page: /usr/local/php8/php/man/man8/
Installing PHP FPM status page: /usr/local/php8/php/php/fpm/
Installing phpdbg binary: /usr/local/php8/bin/
Installing phpdbg man page: /usr/local/php8/php/man/man1/
Installing PHP CGI binary: /usr/local/php8/bin/
Installing PHP CGI man page: /usr/local/php8/php/man/man1/
Installing build environment: /usr/local/php8/lib/php/build/
Installing header files: /usr/local/php8/ include /php/
Installing helper programs: /usr/local/php8/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php8/php/man/man1/
page: phpize.1
page: php-config.1
/opt/php-8.1.3/build/shtool install -c ext/phar/phar.phar /usr/local/php8/bin/phar.phar
ln -s -f phar.phar /usr/local/php8/bin/phar
Installing PDO headers: /usr/local/php8/include/php/ext/pdo/
0
make install指令的返回值为0,说明编译安装PHP成功。
查看安装好的目录结构。
[root@itop-test php-8.1.3]# tree /usr/local/php8/ -L 2
/usr/local/php8/
├── bin
│ ├── phar -> phar.phar
│ ├── phar.phar
│ ├── php
│ ├── php-cgi
│ ├── php-config
│ ├── phpdbg
│ └── phpize
├── etc
│ ├── php-fpm.conf.default
│ └── php-fpm.d
├── include
│ └── php
├── lib
│ └── php
├── php
│ ├── man
│ └── php
├── sbin
│ └── php-fpm
└── var
├── log
└── run
14 directories, 9 files
6、配置php.ini
php.ini-development 测试 开发环境
php.ini-production 生产环境
复制一份到指定的目录下(根据自己的情况选用,自己可以对比下这两个文件的差异):
cp -av php.ini-production /usr/local/php8/etc/php.ini
7、配置php-fpm
# 设置目录
mkdir -pv /home/log/
cd /usr/local/php8/etc
cp -av php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
设置pid和log
vim php-fpm.conf
error_log = /home/log/php-fpm.log
pid = /home/log/php-fpm.pid
注意:pid设置在php-fpm.conf文件的约18行处,error_log设置在php-fpm.conf配置文件的约26行处,可使用如下指令验证配置是否正确。
[root@itop-test php-8.1.3]# grep -En "^pid|^error_log" /usr/local/php8/etc/php-fpm.conf
18:pid = /home/log/php-fpm.pid
26:error_log = /home/log/php-fpm.log
配置www
cd /usr/local/php8/etc/php-fpm.d
cp -av www.conf.default www.conf
使用systemctl命令来控制php-fpm
cd /opt/php-8.1.3
cp -av ./sapi/fpm/php-fpm.service /usr/lib/systemd/system/
8、管理php-fpm
# 开机启动
systemctl enable php-fpm
# 启动
systemctl start php-fpm
# 查看状态
systemctl status php-fpm
# 停止
systemctl stop php-fpm
9、添加 环境变量 :
vim /etc/profile
# 末尾追加
export PATH=$PATH:'/usr/local/php8/bin/'
# wq 保存退出,执行
source /etc/profile
非交互式操作。
cat >>/etc/profile<<hanyw
### hanyw20220802 begin###
export PATH=\$PATH:'/usr/local/php8/bin/'
### hanyw20220802 end###
hanyw
source /etc/profile
测试:
php -v
[root@itop-test php-8.1.3]# php -v
PHP 8.1.3 (cli) (built: Aug 2 2022 10:33:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies