0


php8.2 编译安装(详细)+ bash脚本 (多linux版本)

编译安装php8.2.10(2023.9.17更新)
以下操作在debian12(deb系-debian\ubuntu)和rocky9.2(red hat系-centos\rocky linux\oracle linux)都测试过
仅限linux系统

在全文的最后,我写了bash脚本(只支持deb系),可以参考,直接运行bash脚本一键编译安装


1.下载并解压源码包

php官方下载页面
在/usr/local目录下操作

cd /usr/local

下载源码包

wget https://www.php.net/distributions/php-8.2.10.tar.gz

解压并进入目录

tar-zxvf php-8.2.10.tar.gz &&cd php-8.2.10

2.安装依赖

依赖是根据开启的扩展决定的,以下的拓展是常用的,编译安装的好处之一,就是如果缺少拓展也很容易自行安装。
1)

deb系列
apt-getinstall build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev

2)

redhat系列

redhat系由于包不全(deb系好用啊),如果遇到找不到的包,可以在 pkgs.org中查找

dnf -y groupinstall 'Development Tools'
dnf -yinstallwget libxml2-devel sqlite-devel bzip2-devel libcurl-devel libffi-devel libpng-devel libwebp-devel libjpeg-devel oniguruma libzip

安装 oniguruma

wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
dnf -yinstall oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

安装libzip-devel

wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/l/libzip-devel-1.7.3-7.el9.x86_64.rpm
dnf -yinstall libzip-devel-1.7.3-7.el9.x86_64.rpm

3.编译安装

查看编译参数(可跳过,如果你不知道参数的作用)

./configure -help

编译参数如下:

./configure --prefix=/usr/local/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl

上面的展开说明(使用的话直接复制上面的,这里是做解释用的)

./configure  
--prefix=/usr/local/php  #安装地址
--sysconfdir=/etc/php   #设置文件地址
--with-openssl  #启用ssl
--with-zlib  
--with-bz2  
--with-curl  #启用curl(必开)
--enable-bcmath  
--enable-gd  
--with-webp  
--with-jpeg  
--with-mhash  
--enable-mbstring  #必开,很多需要用到
--with-imap-ssl  
--with-mysqli  #mysqli函数,如果用pdo,可以补开
--enable-exif  
--with-ffi  #支持外挂C程序
--with-zip  
--enable-sockets  #开启socket
--with-pcre-jit  #开启jit
--enable-fpm  #开启fpm模式(必开)
--with-pdo-mysql   #支持mysql
--with-pdo-pgsql  #支持pgsql
--enable-pcntl

显示如下的提示,说明可以继续安装了
在这里插入图片描述编译安装,安装时间比较长,请耐心等待!

make&&makeinstall

编译完成后会显示类似如下信息:
里面包含了各种文件的地址,建议编译后截图保存,方便日后查看
在这里插入图片描述

4.添加系统用户

添加用户组,名字用www是因为通常php做web后端开发的,可以改成别的。

groupadd www

添加用户(一个不允许登录的用户)

useradd-g www -s /sbin/nologin www

5.配置

将配置文件复制到正确的位置(很多情况下修改配置不生效就是配置文件地址没搞对)

cp /usr/local/php-8.2.10/php.ini-development /usr/local/php/lib/php.ini
cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
cp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf

6.配置环境变量

vi /etc/profile

在PATH中添加,和其它的目录用:分隔开

/usr/local/php/bin

类似如下(写的详细些,一些新手对环境变量理解不够)
在这里插入图片描述或者直接

exportPATH=$PATH:/usr/local/php/bin

保存退出后,刷新环境变量

source /etc/profile

输入以下命令,如果能够返回版本号,说明配置成功

php -v

正确返回如下的信息
在这里插入图片描述

7.配置php

修改默认session位置
创建session地址(也可以写成别的)

mkdir /usr/local/php/tmp &&chmod-R755 /usr/local/php/tmp

修改php.ini

vi /usr/local/php/lib/php.ini

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

配置php-fpm

vi /etc/php/php-fpm.d/www.conf

修改user=www,group=www(原本都是nobody)

8.systemctl管理(php-fpm)

创建脚本文件

vi /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

开启、开机启动

systemctl start php-fpm && systemctl enable php-fpm && systemctl status php-fpm

至此php编译安装和php-fpm的启动就完成了
注意:php有两种常见的运行方式,apache和nginx的调用方式不同,nginx调用php-fpm。


9.常用的php基本命令

命令行下操作
查看配置文件的位置

php --ini

确定php cli安装了哪些拓展

php -m

10.php配置外部组件

陆续更新增加链接,包括但不限于以下
php配置nginx: php配置nginx

php增加redis拓展支持: php配置redis

php增加mongodb拓展支持:php配置mongodb

php增加rabbitmq拓展支持

php增加swoole拓展支持

php多版本并存

composer使用

jit开启及配置: php开启jit

11.bash脚本一键编译安装(参考)

仅支持deb系,暂时不支持suse系edhat系,

创建文件
vi /usr/local/php82.sh
内容如下
#!/bin/bash# 常量设置php_version="8.2.10"# php版本install_path="/usr/local"# 安装、操作目录# 安装依赖echo"......正在安装依赖......"apt-getinstall-y build-essential autoconf automake libtool libsqlite3-dev pkg-config libjpeg-dev libpng-dev libxml2-dev libbz2-dev libcurl4-gnutls-dev libssl-dev libffi-dev libwebp-dev libonig-dev libzip-dev
echo"......依赖安装完成......"# 下载php源码包echo"......正在下载源码包......"cd${install_path}wget-P${install_path} https://www.php.net/distributions/php-${php_version}.tar.gz 
echo"......源码包下载完成......"# 解压缩echo"......正在解压缩源码包......"tar-zxf${install_path}/php-${php_version}.tar.gz
echo"......源码包解压缩完成......"# 编译安装echo"......正在编译安装......"${install_path}/php-${php_version}/configure --prefix=${install_path}/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl
cd${install_path}/php-${php_version}&&make&&makeinstallecho"......编译安装完成......"# 添加用户组和用户echo"......正在添加用户组和用户......"groupadd www &&useradd-g www -s /sbin/nologin www
echo"......完成添加用户组和用户......"# 配置文件复制echo"......正在复制配置文件......"cp${install_path}/php-${php_version}/php.ini-development ${install_path}/php/lib/php.ini
cp /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
cp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf
echo"......复制配置文件完成......"# 配置环境变量echo"......正在配置环境变量......"echo"export PATH=\$PATH:/usr/local/php/bin">> /etc/profile
. /etc/profile
echo"......配置环境变量完成......"# 配置phpecho"......正在配置php配置文件......"## 创建session文件夹mkdir${install_path}/php/tmp &&chmod-R755${install_path}/php/tmp
## 修改配置文件(/usr/local/php/lib/php.ini)中的地址sed-i's/;session.save_path = "\/tmp"/session.save_path = "\/usr\/local\/php\/tmp"/g' /usr/local/php/lib/php.ini
## 修改配置文件(/etc/php/php-fpm.d/www.conf)中的用户sed-i's/user = nobody/user = www/g' /etc/php/php-fpm.d/www.conf
sed-i's/group = nobody/group = www/g' /etc/php/php-fpm.d/www.conf
echo"......配置php配置文件完成......"# 配置systemctl脚本echo"......正在配置systemctl脚本......"
cat>/usr/lib/systemd/system/php-fpm.service<<EOF
[Unit]
Description=php-fpm
After=syslog.target network.target

[Service]
Type=forking
ExecStart=${install_path}/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start php-fpm
systemctl enable php-fpm
systemctl status php-fpm
echo"......systemctl脚本配置完成......"echo"......!!!脚本运行完成!!!......"

运行文件

sh /usr/local/php82.sh
标签: php

本文转载自: https://blog.csdn.net/ziqibit/article/details/129461718
版权归原作者 ziqibit 所有, 如有侵权,请联系我们删除。

“php8.2 编译安装(详细)+ bash脚本 (多linux版本)”的评论:

还没有评论