php8.2 编译安装(详细)+ bash脚本
编译安装php8.2.8(2023.7.4)
以下操作在debian11演示,其余deb系列(如ubuntu)同样,redhat系列自行安装依赖其余一样
仅限linux系统,bsd系统不适用此教程(因为命令不一样,但是差不多)
在全文的最后,我写了bash脚本(只支持deb系),可以参考,直接运行bash脚本一键编译安装
1.下载并解压源码包
php官方下载页面
在/usr/local目录下操作
cd /usr/local
下载源码包
wget https://www.php.net/distributions/php-8.2.8.tar.gz
解压并进入目录
tar -zxvf php-8.2.8.tar.gz && cd php-8.2.8
2.安装依赖
依赖是根据开启的扩展决定的,以下的拓展是常用的,编译安装的好处之一,就是如果缺少拓展也很容易自行安装。
apt-get install 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
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 && make install
编译完成后会显示类似如下信息:
里面包含了各种文件的地址,建议编译后截图保存,方便日后查看
4.添加系统用户
添加用户组,名字用www是因为通常php做web后端开发的,可以改成别的。
groupadd www
添加用户(一个不允许登录的用户)
useradd -g www -s /sbin/nologin www
5.配置
将配置文件复制到正确的位置(很多情况下修改配置不生效就是配置文件地址没搞对)
cp /usr/local/php-8.2.8/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
类似如下(写的详细些,一些新手对环境变量理解不够)
保存退出后,刷新环境变量
source /etc/profile
输入以下命令,如果能够返回版本号,说明配置成功
php -v
正确返回如下的信息
7.配置php
修改默认session位置
创建临时地址
mkdir /usr/local/php/tmp && chmod -R 755 /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-fpmAfter=syslog.target network.target[Service]Type=forkingExecStart=/usr/local/php/sbin/php-fpmExecReload=/bin/kill -USR2 $MAINPIDPrivateTmp=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系,如果别的自行修改bash
创建文件
vi /usr/local/php82.sh
内容如下
#!/bin/bash# 常量设置php_version="8.2.8" # php版本install_path="/usr/local" # 安装、操作目录# 安装依赖echo "......正在安装依赖......"apt-get install -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-devecho "......依赖安装完成......"# 下载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.gzecho "......源码包解压缩完成......"# 编译安装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-pcntlcd ${install_path}/php-${php_version} && make && make installecho "......编译安装完成......"# 添加用户组和用户echo "......正在添加用户组和用户......"groupadd www && useradd -g www -s /sbin/nologin wwwecho "......完成添加用户组和用户......"# 配置文件复制echo "......正在复制配置文件......"cp ${install_path}/php-${php_version}/php.ini-development ${install_path}/php/lib/php.inicp /etc/php/php-fpm.conf.default /etc/php/php-fpm.confcp /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.confecho "......复制配置文件完成......"# 配置环境变量echo "......正在配置环境变量......"echo "export PATH=\$PATH:/usr/local/php/bin" >> /etc/profile. /etc/profileecho "......配置环境变量完成......"# 配置phpecho "......正在配置php配置文件......"## 创建session文件夹mkdir ${install_path}/php/tmp && chmod -R 755 ${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.confsed -i 's/group = nobody/group = www/g' /etc/php/php-fpm.d/www.confecho "......配置php配置文件完成......"# 配置systemctl脚本echo "......正在配置systemctl脚本......"cat>/usr/lib/systemd/system/php-fpm.service<<EOF[Unit]Description=php-fpmAfter=syslog.target network.target[Service]Type=forkingExecStart=${install_path}/php/sbin/php-fpmExecReload=/bin/kill -USR2 \$MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetEOFsystemctl daemon-reloadsystemctl start php-fpmsystemctl enable php-fpmsystemctl status php-fpmecho "......systemctl脚本配置完成......"echo "......!!!脚本运行完成!!!......"
运行文件
sh /usr/local/php82.sh
来源地址:https://blog.csdn.net/ziqibit/article/details/129461718
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341