PHP8编译安装
CentOS8编译安装PHP8
PHP,全称Hypertext Preprocessor(超文本预处理器),是一种通用开源脚本语言。它特别适合于web开发,并能嵌入HTML中。现在主要用于PHP网站中实现动态网站功能,常规我们使用nginx、apache部署的是html静态网页,可以通过.php编写动态页面实现。
一、下载
# 创建文件夹用来安装php
mkdir /www/php80
# 官网下载然后上传到服务器或者wget下载到对应文件夹
wget https://www.php.net/distributions/php-8.1.7.tar.gz
# 解压文件
tar -zxvf php-8.1.7.tar.gz
# 修改文件夹用户和组,防止没有权限执行
chown -R root php-8.1.7
chgrp -R root php-8.1.7
cd php-8.1.7
二、安装配置
# 和nginx编译安装类似,使用.configure进行配置
# --prefix:php.ini文件路径位置
# --with-config-file-path : 配置文件
./configure --prefix=/www/php8 --with-config-file-path=/www/php8/etc --with-curl --with-freetype --enable-gd --with-jpeg --with-gettext --with-kerberos --with-libdir=lib64 --with-libxml --with-mysqli --with-openssl --with-pdo-mysql --with-pdo-sqlite --with-pear --enable-sockets --with-mhash --with-ldap-sasl --with-xsl --with-zlib --with-zip -with-bz2 --with-iconv --enable-fpm --enable-pdo --enable-bcmath --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-sysvsem --enable-cli --enable-opcache --enable-intl --enable-calendar --enable-static --enable-mysqlnd
报错处理:
1.libxml
问题:
Package 'libxml-2.0', required by 'virtual:world', not found
解决方法:
yum install libxml2-devel
2.sqlite3
问题:
Package 'sqlite3', required by 'virtual:world', not found
解决方法:
yum install sqlite-devel
3.Bzip2
问题:
configure: error: Please reinstall the BZip2 distribution
解决方法:
yum -y install bzip2-devel
4.libcurl
问题:
Package 'libcurl', required by 'virtual:world', not found
解决方法:
yum install libcurl-devel
5.libpng
问题:
Package 'libpng', required by 'virtual:world', not found
解决方法:
yum install libpng libpng-devel
6.libjpeg
问题:
Package 'libjpeg', required by 'virtual:world', not found
解决方法:
yum install libjpeg-devel
7.freetype2
问题:
Package 'freetype2', required by 'virtual:world', not found
解决方法:
yum install freetype-devel
8.icu
问题:
Package 'icu-uc', required by 'virtual:world', not found
Package 'icu-io', required by 'virtual:world', not found
Package 'icu-i18n', required by 'virtual:world', not found
解决方法:
yum install -y libicu-devel.x86_64
9.oniguruma
问题:
Package 'oniguruma', required by 'virtual:world', not found
解决方法:
1.下载安装包
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
2.解压
tar -zxvf oniguruma-6.9.4.tar.gz
3.进入文件夹进行编译安装
cd oniguruma-6.9.4
4.安装依赖
yum install autoconf automake libtool
5.编译到/usr目录下
./autogen.sh && ./configure --prefix=/usr
6.安装
make && make install
10.libxslt
问题:
Package 'libxslt', required by 'virtual:world', not found
解决方法:
yum -y install libxslt-devel
11.libzip
问题:
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
解决方法:
yum install libzip-devel
终于完成了,出现下面的提示:
Generating files
configure: patching main/php_config.h.in
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/fpm/php-fpm.conf
config.status: creating sapi/fpm/www.conf
config.status: creating sapi/fpm/init.d.php-fpm
config.status: creating sapi/fpm/php-fpm.service
config.status: creating sapi/fpm/php-fpm.8
config.status: creating sapi/fpm/status.html
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
+--------------------------------------------------------------------+
| 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.
安装:
make && make install
完成:
Don't forget to run 'make test'.
Installing shared extensions: /www/php8/lib/php/extensions/no-debug-non-zts-20210902/
Installing PHP CLI binary: /www/php8/bin/
Installing PHP CLI man page: /www/php8/php/man/man1/
Installing PHP FPM binary: /www/php8/sbin/
Installing PHP FPM defconfig: /www/php8/etc/
Installing PHP FPM man page: /www/php8/php/man/man8/
Installing PHP FPM status page: /www/php8/php/php/fpm/
Installing phpdbg binary: /www/php8/bin/
Installing phpdbg man page: /www/php8/php/man/man1/
Installing PHP CGI binary: /www/php8/bin/
Installing PHP CGI man page: /www/php8/php/man/man1/
Installing build environment: /www/php8/lib/php/build/
Installing header files: /www/php8/include/php/
Installing helper programs: /www/php8/bin/
program: phpize
program: php-config
Installing man pages: /www/php8/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /www/php8/lib/php/
[PEAR] Archive_Tar - installed: 1.4.14
[PEAR] Console_Getopt - installed: 1.4.3
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util - installed: 1.4.5
warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.14 is not the recommended version 1.4.4
[PEAR] PEAR - installed: 1.10.13
Wrote PEAR system config file at: /www/php8/etc/pear.conf
You may want to add: /www/php8/lib/php to your php.ini include_path
/www/php-8.1.7/build/shtool install -c ext/phar/phar.phar /www/php8/bin/phar.phar
ln -s -f phar.phar /www/php8/bin/phar
Installing PDO headers: /www/php8/include/php/ext/pdo/
三、文件设置
1.php-ini,将源码目录下的php.ini-production复制到自己的目录下
cp php.ini-production /www/php8/etc/php.ini
2.生成www配置文件,将目录下的模板文件重命名
cd /www/php8/etc/php-fpm.d/
cp www.conf.default www.conf
3.生成php-fpm配置文件
cd /www/php8/etc/
cp php-fpm.conf.default php-fpm.conf
4.生成php-fpm可执行文件
# 创建存放配置文件的目录
mkdir php-fpm
# 从源码中复制一份fpm可执行脚本
cp /www/php-8.1.7/sapi/fpm/init.d.php-fpm /www/php8/etc/php-fpm/php-fpm
# 修改可执行文件的权限
chmod 740 php-fpm
四、进程启用管理
# 使用可执行文件进行启动
cd /www/php8/etc/php-fpm/
./php-fpm start
# 正常启动:
Starting php-fpm done
# ps查看进程是否启动
ps -aux | grep php-fpm
# 查看php-fpm进程占用的端口,正常应该是9000
netstat -nltp
# 查看php版本
cd /www/php8/bin/
./php -v
使用systemctl管理服务
# 修改/php/etc/php-fpm.conf
[global]
; Pid file
; Note: the default prefix is /www/php8/var
; Default Value: none
; pid = run/php-fpm.pid # 将前面分号删除
vim /usr/lib/systemd/system/php-fpm.service
# 添加下面内容,目录要配置自己的对应目录
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 保存文件
# 使用systemctl管理
systemctl daemon-reload # 刷新systemctl
systemctl start php-fpm # 启动进程
systemctl stop php-fpm # 结束进程
systemctl enable php-fpm# 开机启动
五、模块功能更新
1.进入源码目录进行编译安装
# php -m输出php的功能模块,在源码包的ext里面可以看到相应的模块,这些是自带的模块
cd /www/php-8.1.7/ext/
# 查看模块
ls
# 测试exif
cd exif
# 进入文件夹,使用phpize生成configure文件进行编译安装
cd /www/php8/bin/phpize
# 编译时指定配置文件
./configure --with-php-config=/www/php8/bin/php-config
# 安装
make && make install
# 安装完成之后会出现一个目录,里面包含了exif.so文件
# 修改php.ini,在最后添加上添加模块的路径
vim /www/php8/etc/php.ini
extension=/www/php8/lib/php/extensions/no-debug-non-zts-20210902/exif.so
# 保存,重启php-fpm进程
# 通过php -m 查看模块功能已经添加
本文由 mdnice 多平台发布
相关文章:
PHP8编译安装
CentOS8编译安装PHP8 PHP,全称Hypertext Preprocessor(超文本预处理器),是一种通用开源脚本语言。它特别适合于web开发,并能嵌入HTML中。现在主要用于PHP网站中实现动态网站功能,常规我们使用nginx、apache…...
3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)
三个关键要素 从相机配准的过程中得到的稀疏点云开始,使用3D Gaussian表示场景; 3D Gaussian: 是连续体积辐射场能够防止不必要的空空间优化。对 3D Gaussion进行交叉优化和密度控制: 优化各向异性血方差对场景精确表示。使用快速可视感知渲染算法来进行快速的训练…...
二叉树<II>:二叉树的四种遍历方式代码实现Python3
今天我们来介绍的是二叉树的「前序」、「中序」、「后序」、「层序」四种遍历方式如何用代码实现。 还不知道这四种遍历方式原理的可以看另一篇文章:二叉树<I>:概念及二叉树的前序遍历、中序遍历、后序遍历原理 1. 相关题目 这…...
vite ts vue 项目提示 . Projects must list all files or use an include pattern.
vite ts vue 项目提示 . Projects must list all files or use an include pattern. 在引用一个 ts 的时候,提示如下: 需要在 tsconfig.node.json 文件中添加: {"compilerOptions": {"composite": true,"skipLibC…...
鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合
simulink与matlab联合 风机模糊控制 改善后的系统频率 simulink.采用风储联合数学模型...
C语言经典面试题目(七)
1、C语言中如何进行内存对齐和字节对齐? 在C语言中,内存对齐和字节对齐是为了优化内存访问速度和提高系统性能而进行的一种策略。内存对齐是指数据在内存中的存放位置必须是某个值的倍数,通常是数据类型的大小。字节对齐是指数据在内存中的存…...
2024华为春招Django面试题大全,最全知识点揭秘,面试必备!
为了帮助广大求职者更好地准备即将到来的面试,本文精心编撰了一系列涵盖InnoDB存储引擎关键知识点的面试题。这些问题不仅覆盖了InnoDB的基础知识,如其ACID特性、索引设计、锁机制等,还涵盖了性能优化、备份恢复策略等高级话题,旨…...
搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象
创造了一种基于 PC 的创新型多边沉浸式环境,让参与者完全被虚拟图像和声音包围。 需要解决的挑战: 传统的 VR 系统往往缺乏真实的触摸反馈,限制了用户的沉浸感。AVR Japan 旨在通过将触觉技术融入到他们的 CAVE 系统中来应对这一挑战&#x…...
独立服务器的优势
独立服务器的优势 高性能 独立服务器提供了卓越的性能,因为它们不与其他用户共享资源。这使得您的网站或应用程序能够快速响应访问请求,并处理大量数据。 安全性 由于没有其他租户在同一服务器上,独立服务器的安全性更高。您可以更好地控制…...
前端框架vue的样式操作,以及vue提供的属性功能应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
【自动化测试】如何在jenkins中搭建allure
相信大家在做自动化测试过程中,都会用到自动化测试环境,目前最常见的就是通过容器化方式部署自动化测试环境,但对于一些测试小白,不是很会搭建持续集成环境,特别是从0-1的过程,需要自行搭建很多依赖环境&am…...
2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?
1.实验环境介绍 实验1:模拟5种操作主机都在DC01上的域控宕机了 (1)实验先决条件 (2)测试的方向 实验2:域控夺权实验操作 方式1:AD用户和计算机工具转移操作主机角色 (1)RID角色转移: (2)PDC角色转移 (3)基础结构操作主机角色转移 方式2:powshell命令强制…...
C# event的使用
在C#中,事件(Event)是一种特殊的成员,它允许类或对象以类型安全的方式向外界发出通知,表明某个特定的行为或状态变化已经发生。 订阅该事件的其他类可以定义处理方法来响应这些通知。 事件主要基于委托机制实现&…...
外包干了9天,技术退步明显。。。。。
先说一下自己的情况,本科生,2018年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…...
Android Framework 之 Python
当然可以,我会尽量提供更详细的内容,并增加更多的例子和解释。以下是更详细的Python语言教程: Python语言教程 一、Python简介 Python是一种高级编程语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于…...
【Fitten Code】“吊打“Github Copilot的国内免费代码辅助插件
🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! 目录 1.Github Copilot 2.Fitten Code 2.1 对话体验: 2.2 代码补全体验: 2.3 Pycharm安装方法: 2.4 Vscode安装方法…...
Git中的换行符CRLF和LF问题
目录 第一章、问题分析1.1)Git报错提示1.2)报错分析 第二章、解决方式2.1)在Windows上开发并需要与Unix或macOS上的开发人员协作2.1)在Unix或macOS开发并需要与Windows上的开发人员协作2.3)不需要与其他操作系统的开发…...
go语言文件操作
标准流的操作 从标准输入中查找重复的行 // 从标准输入中查找重复的行 func main() {counts : make(map[string]int, 0)scanner : bufio.NewScanner(os.Stdin) for scanner.Scan() {counts[scanner.Text()]}for key, value : range counts {if value > 1 {fmt.Println(&quo…...
七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma
前言 我司第二项目组一直在迭代论文审稿GPT(对应的第二项目组成员除我之外,包括:阿荀、阿李、鸿飞、文弱等人),比如 七月论文审稿GPT第1版:通过3万多篇paper和10多万的review数据微调RWKV七月论文审稿GPT第2版:用一万…...
QML 自定义时间编辑控件
一.展示效果 qml自定义时间编辑控件 二.主界面调用 //main.qml import QtQuick 2.12 import QtQuick.Controls 2.5 import QtQuick.Window 2.12 import "./qml"Window {visible: truewidth: 400height: 300title: qsTr("Hello World")property date origi…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
