CentOS 下编译安装 PHP8.0(nginx 版)

首先安装PHP8.0所需要的各种依赖包

yum -y install autoconf freetype gd libpng libpng-devel libjpeg libxml2 libxml2-devel zlib curl curl-devel net-snmp-devel libjpeg-devel php-ldap openldap-devel openldap-clients freetype-devel gmp-devel libzip libzip-devel sqlite-devel
yum install oniguruma-devel
yum install autoconf automake libtool

然后编译安装PHP8依赖包oniguruma

解释一下这个oniguruma依赖包的作用是什么?

oniguruma是一个正则表达式库,用于处理文本匹配和模式搜索。在PHP中,oniguruma库用于支持正则表达式的处理,包括匹配、替换、拆分等操作。
具体来说,oniguruma库提供了一组功能强大的正则表达式引擎,支持各种高级的正则表达式语法和特性。它能够处理复杂的模式匹配需求,并提供了灵活和高效的匹配算法。
在PHP 8中,oniguruma库被用作内置的正则表达式引擎,默认情况下会启用。它提供了一些扩展的正则表达式功能,例如命名捕获组、反向引用、零宽断言等。通过使用oniguruma库,PHP能够更强大地处理字符串的模式匹配和处理需求。
总而言之,oniguruma库在PHP中的作用是提供强大的正则表达式支持,使开发者能够更灵活、高效地处理文本匹配和模式搜索的需求。

提供一下我的百度链接下载地址:
链接: pan.baidu.com/s/1cCJFv9bGMzc2z-yp4... 提取码: nb7e

然后就是编译安装依赖包oniguruma

1.解压
tar -zxvf oniguruma-6.9.4.tar.gz

2.切换目录
cd oniguruma-6.9.4/

3.生成configure
./autogen.sh

4.生成编译配置文件
./configure --prefix=/usr

5.编译并安装
make && make install

编译PHP8主包

还是提供一下php8.0的源码安装包你也可以自己去官网下载:
链接: pan.baidu.com/s/1hpZR2RgRPQNh86gol... 提取码: 15ge
在编译安装的过程当中会报错如下:

configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:
Requested 'libzip >= 0.11' but version of libzip is 0.10.1

所以我们提前规避一下 去下载百度网盘的libzip3.2的源码安装包:
链接: pan.baidu.com/s/1xHXYkORwgbGjKV9zm... 提取码: 595r

首先执行一下清除历史libzip的命令:

yum remove libzip-devel libzip

进入解压后的文件夹,执行配置脚本:

./confugure

编译并安装:

make & make install

安装完成后,查询/usr/local/lib目录下是否有pkgconfig目录,有的话执行命令

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"

用来指定PKG_CONFIG_PATH

接下里就是php8.0的整个安装过程了

1.解压
tar xzf php-8.0.0.tar.gz
2.切换目录
cd php-8.0.0/
3.生成编译配置文件
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-opcache --with-pcre-jit --enable-gd --with-jpeg --with-freetype --with-gettext --with-curl --with-openssl --enable-sockets --enable-mbstring --enable-xml --with-zip --with-zlib --with-snmp --with-mhash --enable-ftp --enable-bcmath --enable-soap --enable-shmop --enable-sysvsem --enable-pcntl --with-gmp
4.编译并安装
make && make install

php8.0的环境配置:

# 拷贝安装包里面的php.ini-development到安装路径里面的位置当中去
cp /usr/local/src/php-8.0.0/php.ini-development  /usr/local/php/etc/php.ini
#进入到安装路径
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
#进入到安装路径
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default  www.conf

然后我们就可以通过php-fpm各种命令来管理了:

1.配置文件语法检测
/usr/local/php/sbin/php-fpm -t

2.服务管理
1)启动
/usr/local/php/sbin/php-fpm

2)关闭
pkill php-fpm

3)重载
pkill -USR2 php-fpm

3.php-fpm进程管理:
pstree |grep php-fpm
ps -ef |grep php-fpm
ps aux |grep php-fpm

7.php-fpm端口管理:
netstat -tunpl |grep php-fpm

添加环境变量:

vim  /etc/profile

在末尾追加:

export PATH=$PATH:'/usr/local/php/bin/'

保存退出。

source /etc/profile

测试:

php -v

如图所示:
CentOS 下编译安装 PHP7.2

如果需要区分web和cli环境,可以将 /usr/local/php/etc/php.ini 复制一份,重命名为php-cli.ini

cp /usr/local/php/etc/php.ini  /usr/local/php/etc/php-cli.ini

需要调整配置,就在各自的配置文件中进行调整即可。

配置systemctl来管理php-fpm

创建脚本执行如下命令:

vim /usr/lib/systemd/system/php-fpm.service

然后写入如下代码:

[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

刷新systemctl

systemctl daemon-reload

这个时候建议先关闭之前通过sbin/php-fpm启动的php-fpm服务

pkill php-fpm

然后再去执行

# 设置开机启动
systemctl enable php-fpm
systemctl start php-fpm
systemctl status php-fpm
systemctl stop php-fpm

至此php编译安装和php-fpm的启动就完成了。

查看php.ini配置文件的位置

php --ini

查看php有哪些扩展

php -m

修改默认session位置

创建session地址(也可以写成别的)

mkdir /usr/local/php/tmp && chmod -R 755 /usr/local/php/tmp

修改php.ini
通过php–ini命令可以查看php.ini配置文件的路径

vim /usr/local/php/etc/php.ini

找到session.save_path,修改后面内容为”/usr/local/php/tmp”(原本是“/tmp”)

响应头中隐藏php信息

找到expose_php = On;,修改On为Off。这个修改是在响应头中隐藏php信息。否则在响应头的X-Powered-By中会显示php版本(尽量不要让入侵者获取更多的信息)

配置php-fpm的报错日志路径

php-fpm 的日志路径是通过 PHP-FPM 的配置文件中的 error_log 指令进行设置的。这个指令用于指定 PHP-FPM 进程的错误日志路径。以下是设置 php-fpm 日志路径的步骤:
找到 PHP-FPM 的配置文件,通常是 usr/local/php/etc/php-fpm.conf 或者 usr/local/php/etc/php-fpm.d/www.conf(具体路径可能因发行版而异)。
在配置文件中找到 error_log 指令

CentOS 下编译安装 PHP8.0(nginx 版)

这样我们就可以快速定位php-fpm的错误信息了

如何记录php-fpm的访问日志呢?

找到usr/local/php/etc/php-fpm.d/www.conf 配置文件
CentOS 下编译安装 PHP8.0(nginx 版)

CentOS 下编译安装 PHP8.0(nginx 版)

因为我们在php-fpm.conf当中配置了error_log日志的路径是/usr/local/php/log 所以php-fpm.log 和这里我们上图当中的access访问日志的log都会在该目录下被创建

CentOS 下编译安装 PHP8.0(nginx 版)

当你访问php文件的时候访问日志就会在www.access.log 当中被记录下来 不过不建议开启该日志 直接去看nginx或者apache的日志就行了

本作品采用《CC 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!