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

这篇具有很好参考价值的文章主要介绍了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-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

2)redhat系列

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

dnf -y groupinstall 'Development Tools'
dnf -y install wget 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 -y install 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 -y install 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

显示如下的提示,说明可以继续安装了
编译安装php8,程序语言,php编译安装,安装时间比较长,请耐心等待!

make && make install

编译完成后会显示类似如下信息:
里面包含了各种文件的地址,建议编译后截图保存,方便日后查看
编译安装php8,程序语言,php

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中添加,和其它的目录用:分隔开(如果找不到PATH,用第二种方式)

/usr/local/php/bin

第一种方式:类似如下(写的详细些,一些新手对环境变量理解不够)
编译安装php8,程序语言,php第二种方式:直接在文件的最下面加入下面

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

保存退出后,在命令行刷新环境变量

source /etc/profile

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

php -v

正确返回如下的信息
编译安装php8,程序语言,php

7.配置php

修改默认session位置
创建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”)
找到expose_php = On;,修改On为Off。这个修改是在响应头中隐藏php信息。否则在响应头的X-Powered-By中会显示php版本(尽量不要让入侵者获取更多的信息)

修改默认open_basedir
允许php访问的地址,可以在php配置,也可以在nginx配置(如果两者都配置了,以php为主)

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

找到open_basedir,然后添加需要的目录

配置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使用:composer安装和使用

jit开启及配置: php开启jit

11.复制编译好的php到新设备

编译时间较长,而且如果内存只有1g(通常是云服务器),无法正常编译。
1)在新设备上安装依赖
2)将编译后的文件夹复制到新设备的相同位置(/usr/local/php)
3)将配置文件复制到新设备的相同位置(/etc/php)
4)配置环境变量
5)配置systemctl

12.可能的报错openssl

如果openssl报错,安装openssl3即可
openssl官网下载地址

cd /usr/local 
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
tar -zxvf openssl-3.0.12.tar.gz && cd openssl-3.0.12
./config
make && make install
ldconfig /usr/local/lib64/

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

仅支持deb系,暂时不支持suse系edhat系,仅供参考,每台设备不太一样,需要自己调整。

创建文件

vi /usr/local/php82.sh

内容如下

#!/bin/bash

# 常量设置
php_version="8.2.10" # 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-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 && make install
echo "......编译安装完成......"

# 添加用户组和用户
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 "......配置环境变量完成......"

# 配置php
echo "......正在配置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.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 "......!!!脚本运行完成!!!......"

运行文件文章来源地址https://www.toymoban.com/news/detail-738179.html

sh /usr/local/php82.sh

到了这里,关于php8.2 编译安装(详细)+ bash脚本 (多linux版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP8知识详解:PHP8开发工具VS Code的安装

    作为PHP8的开发工具有很多,具有IDE功能的有phpstorm、Visual Studio Code、Sublime Text、NetBeans、Eclipse、Codelobster、PHP Designer等,当然还有很多轻量的工具,比如Notepad、Editplus等。本文给你介绍的是万能编辑器Visual Studio Code,简称VS Code。 我为什么选择Visual Studio Code呢?因为他是微软公

    2024年02月15日
    浏览(66)
  • 编写Bash脚本程序从记录文件中提取history命令的优化,再介绍linux bash语法和结构

    目        录 一、引言 二、脚本代码实现 三、bash语法和结构 (一)基本语法 1、脚本开始与结束 2、注释 3、变量 4、数据类型 5、控制结构 6、循环控制 7、函数 8、算术运算 9、算术操作符和逻辑操作符 (二)命令相关 1、命令执行 2、命令的执行顺序 3、命令的执行优先级

    2024年01月25日
    浏览(54)
  • 解决macos使用brew安装php8.2后,老版本提示‘/usr/local/opt/icu4c/lib/libicui18n.70.dylib‘ (no such file)

    原本安装了php7.2,使用brew安装php8.2之后,php 7.2无法使用了,提示: 可以看到/usr/local/opt/icu4c/lib/下没有对应文件了。 今天使用另一种方式来修复。 修复步骤如下: 进入目录: 找到icu4c 7.0的git log: 这里耐心等待下,log比较多,等多几秒就能看到icu4c 7.0的提交记录。 找到后

    2024年02月13日
    浏览(55)
  • ubuntu安装php8.1

    PHP8是PHP最新的Release版本,在这个版本也加入了很多新的功能。 但是在Ubuntu的默认apt库里,找不到PHP8,因此需要稍微做一些额外操作才能安装。 这个库来自于Ondřej Surý,他维护了一个包含了PHP最新版的库。 安装完成后,输入php --version 可以看到版本信息 extension 可以替换任

    2024年02月03日
    浏览(38)
  • docker容器中扩展安装(PHP8)

    Docker容器是轻量级虚拟化技术的一种实现,可以在一个宿主机上运行多个隔离的应用容器。 Docker镜像是个可执行的文件,它包含了运行一个特定应用程序所需的一切组件。从Docker Hub上下载的镜像可能会缺少某些特定的软件包或库文件,因此我们需要在镜像中安装必要的工具

    2024年02月06日
    浏览(41)
  • PHP开发日志 ━━ php8.3安装与使用组件Xdebug

    今天开头写点历史: 二十年前流行asp,当时用vb整合常用函数库写了一个dll给asp调用,并在此基础上开发一套仿windows界面的后台管理系统; 后来asp逐渐没落,于是在十多年前转投php,不久后用php写了一套mvc框架,同时参考asp仿windows经验,结合兴起的jQuery重写后台管理系统。

    2024年02月02日
    浏览(49)
  • php8.0.0安装体验和扩展介绍流程

    安装前的扯犊子科普工作 SAPI:接受并处理请求。 Zend Engine:PHP 的核心,负责分析 PHP 代码并转为 opcode,然后在 Zend VM 虚拟机上执行。 PHP 功能函数及扩展层:实现各种功能,例如 curl 通信、连接 MySQL 等。 把扩展编译进 PHP 通过 pecl 命令或 Linux 发行版自带的 yum、apt-get 等命令

    2024年02月02日
    浏览(55)
  • 宝塔面板如何针对PHP8.1安装zip扩展

    方法一: 如果你没有启用zip扩展,则需要在宝塔中进行安装,并且在php.ini中启用 安装libzip-1.2.0 你可以在任意的路径下载libzip-1.2.0.tar.gz,然后解压缩,进入 libzip-1.2.0 ,编译安装即可 wget https://libzip.org/download/libzip-1.2.0.tar.gz tar -zxvf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure make ma

    2024年02月07日
    浏览(83)
  • windows11 phpstudy_pro php8.2 安装redis扩展

    环境:windows11 phpstudy_pro php8.2.9 一、命令查看是否安装redis扩展 在对应网站中通过打开, ,选择对应的PHP版本,用命令 php -m 查看自己的php 有没有redis扩展 上面如果有,说明已经安装了,如果没有安装; 二、下载适用于 PHP 8.2 的 Redis 动态链接库扩展文件 使phpinfo()函数查看PH

    2024年01月24日
    浏览(58)
  • windows下全免费手动搭建php8+mysql8开发环境及可视化工具安装

    最近PHP项目少了,一直在研究UE5和Golang,但是考虑到政府、国企未来几年国产化的要求,可能又要重拾PHP。于是近日把用了N年的框架重新更新至适合PHP8.2以上的版本,同时也乘着新装机,再次搭建php和mysql开发环境。本文留个记录,以后方便操作。 选择最新版下载 https://ww

    2024年01月20日
    浏览(99)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包