在CentOS8中安装PHP8.0

2023-11-08

我的系统版本:

cat /etc/redhat-release

在这里插入图片描述

1. 下载PHP安装文件

网址:https://downloads.php.net/~pollita/

wget https://downloads.php.net/~pollita/php-8.0.13RC1.tar.gz

解压:

tar -zxvf php-8.0.13RC1.tar.gz
cd php-8.0.13RC1

安装php的依赖库和安装编译的工具,无论有没有装都可以执行一下,否则你就有可能会像我下面那样遇到很多依赖问题。

yum -y install gcc gcc-c++
yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel freetype-devel openldap-devel openldap openldap-devel

2. 根据自己的需求配置安装需要的扩展:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-static --enable-sockets --with-zip --enable-calendar --enable-bcmath --enable-mbstring --with-zlib --with-iconv=/usr/local/libiconv --enable-gd --enable-mbstring --with-curl --with-freetype --disable-ipv6 --disable-debug --with-openssl --enable-intl --enable-opcache

配置过程中可能会遇到很多报错信息

注意:如果你提前安装了我上面说的那些依赖,下面这些报错就会少很多。

  1. 提示缺少依赖 libxml-2.0:
    在这里插入图片描述
    安装:
yum install libxml2-devel
  1. 报错:configure: error: Package requirements (openssl >= 1.0.1) were not met。
    在这里插入图片描述
yum install openssl openssl-devel
  1. 继续configure,又有新错误:
    configure: error: Package requirements (sqlite3 > 3.7.4) were not met
    在这里插入图片描述
yum install sqlite-devel
  1. 继续,新错误:
    configure: error: Package requirements (libcurl >= 7.29.0) were not met
    在这里插入图片描述
yum install -y libcurl-devel.x86_64
  1. 新错误:
    configure: error: Package requirements (libpng) were not met:
    Package ‘libpng’, required by ‘virtual:world’, not found

yum search libpng 搜索,发现要安装两个包:

yum install -y libpng.x86_64 libpng-devel.x86_64

如果提示libpng已安装,就用yum remove 依赖名 这个命令把旧的依赖删掉,重新安装。

  1. 新错误:
    configure: error: Package requirements (freetype2) were not met:
    Package ‘freetype2’, required by ‘virtual:world’, not found
yum install freetype-devel
  1. 新错误:
    please install iconv libary.
[root@hecs-276579 ]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
[root@hecs-276579 ]# tar zxvf libiconv-1.15.tar.gz
[root@hecs-276579 libiconv-1.15]#  cd libiconv-1.15
[rroot@hecs-276579 libiconv-1.15]# ./configure --prefix=/usr/local/libiconv
[root@hecs-276579 libiconv-1.15]#  make 
[root@hecs-276579 libiconv-1.15]#  make install
  1. 新错误:
    configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

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
  1. 新错误:
    checking whether g++ accepts -g… no
    checking how to run the C++ preprocessor… /lib/cpp
    configure: error: in /usr/local/php8/php-8.0.13RC1': configure: error: C++ preprocessor "/lib/cpp" fails sanity check Seeconfig.log’ for more details
    解决:
yum install glibc-headers
yum install gcc-c++ 
  1. 新错误:
    configure: error: Package requirements (oniguruma) were not met:
    Package ‘oniguruma’, required by ‘virtual:world’, not found
    解决:
    参考文章:https://www.cnblogs.com/architectforest/p/12433640.html

  2. 新错误:
    Package ‘libzip’, required by ‘virtual:world’, not found
    解决:

yum install libzip-devel

终于、终于出现了成功界面:
在这里插入图片描述
然后:

make
make install

本以为高枕无忧了,谁知道在make的时候又报错:
cc: fatal error: Killed signal terminated program cc1
compilation terminated.
make: *** [Makefile:931: ext/fileinfo/libmagic/apprentice.lo] Error 1
解决办法:
报这个错误是因为服务器内存不足1G,只需要在配置命令中添加 --disable-fileinfo 即可。
所以在配置命令的最后加上,重新./configure一次:

# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-static --enable-sockets --with-zip --enable-calendar --enable-bcmath --enable-mbstring --with-zlib --with-iconv=/usr/local/libiconv --enable-gd --enable-mbstring --with-curl --with-freetype --disable-ipv6 --disable-debug --with-openssl --enable-intl --enable-opcache --disable-fileinfo

这次终于make && make install 成功了。

此外,可以提前创建用户组和用户:

groupadd www
useradd -g www www

然后在配置命令里面加上:

--with-fpm-user=www \
--with-fpm-group=www \

这样安装好后直接和Apache或者Nginx的用户组对应上了。

3. 安装成功后设置一下PHP

  1. 生成php配置文件
[root@hecs-276579 php]# find / -name "*php.ini*"
/usr/local/php8/php-8.0.13RC1/php.ini-production #安装源文文件夹
/usr/local/php8/php-8.0.13RC1/php.ini-development
[root@hecs-276579 php]# cp /usr/local/php8/php-8.0.13RC1/php.ini-production /usr/local/php/etc/php.ini #复制一份到php/etc目录下
  1. 生成www配置文件
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
  1. 生成php-fpm配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
  1. 生成php-fpm服务启动文件
cd /usr/local/php8/php-8.0.13RC1/ #返回到安装源文件夹
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #复制
  1. 映射全局命令
    不做这一步,输入 php -v 时会显示没有这个命令。
ln -s /usr/local/php/sbin/* /usr/local/sbin/
ln -s /usr/local/php/bin/* /usr/local/bin/
  1. 启动php-fpm服务
service php-fpm start
  1. 查看是否启动
ps auxfww | grep php | grep -v grep
  1. 查看版本号
php -v

在这里插入图片描述
大功告成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在CentOS8中安装PHP8.0 的相关文章

  • $.load 内的表单未正确发布

    这就是我得到的 基本上单击一个按钮并执行以下代码 Readthis MonsterRequest php id Mon TestVar TestVar replace s g Readthis Readthis htmlencode Tes
  • 在网站上不间断地播放 mp3?

    客户请求在整个网站上播放单个曲目 一般来说 我建议不要这样做 但他们坚持这样做 那么 将 Flash 播放器嵌入到网站中并且当用户转到另一个页面时不会出现间隙 中断的最直接方法是什么 我认为需要一个 iframe 我正在使用具有自动恢复功能
  • PHP - 如何将图像资源写入文件

    我用了函数imagecopyresampled到裁剪图像 我尝试使用file put contents和 fwrite 将 resized image 写入硬盘上的文件 但所有尝试都失败了 我可以将调整大小的图像写入磁盘而不是使用image
  • 为 Zend 应用程序提供数据库处理程序的“正确”方法是什么

    假设您严格遵守某个组织的惯例Zend应用程序 http framework zend com manual en zend application html 您应该在哪里设置数据库处理程序以供应用程序开发人员访问 我知道如何设置ZendDb
  • PHP 中的 Europe/London 和 UTC 有区别吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我知道 UTC 和 GMT 实际上是
  • PHP-将字符串转换为unicode

    我在做这个工作 source mb convert encoding test unicode utf 8 source unpack C source var dump source return array size 8 1 gt in
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • Stripe 支付网关使用 PayumBundle 创建定期付款

    我在用支付包 https github com Payum PayumBundle将 Stripe 支付网关集成到我的 symfony2 应用程序中 我可以创建成功的直接付款 但无法创建定期付款 因为捆绑包的文档非常差 我的问题是如何使用
  • PHP 的同义词库类或 API [编辑]

    TL DR 摘要 我需要一个命令行应用程序 我可以用它来获取同义词和其他相关单词 它需要是多语言的并且跨平台工作 任何人都可以为我推荐一个合适的程序 或者帮助我使用我已经找到的程序吗 谢谢 更长的版本 我的任务是用 PHP 编写一个系统 该
  • 如何判断是否ob_start();已经被调用了

    我使用输出缓冲进行 gzip 压缩并访问之前在 PHP 脚本中发布的内容 if ob start ob gzhandler ob start 现在 如果该脚本包含在另一个已使用 ob start 的脚本中 我会收到警告 警告 ob star
  • 自动检测内部/外部开发环境

    我们使用以下函数来自动检测我们是在内部机器上还是在实时服务器上 然后为各种组件选择适当的配置 function devIsLocal res false http host SERVER HTTP HOST if http host loc
  • 在我的 php 网络服务器内副本中启用 mysqli

    正如这里所讨论的 mysqli 直接运行时有效 但通过 js ajax 运行时无效 https stackoverflow com questions 31523601 mysqli works when run directly but
  • Laravel 验证规则仅针对字母

    我正在尝试添加验证规则以仅接受信件 我正在使用regex规则 但它仍然不起作用 下面是我的代码 Validate request input this gt validate request name gt required regex p
  • Jquery UI 日期选择器 设置默认日期

    我使用 jQuery UI 作为日期选择器 我想在字段中显示当前日期作为默认值 以下是我的代码 请帮助 From Date
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 自动生成PHP代码的策略?

    我正在开发一个框架 在后端创建 ER 图后 该框架可以动态地对自身的各个部分进行编程 作为一名 PHP 新手 我想知道是否还有比打开一个纯 xyz php 文本文件然后将动态生成的代码添加到该文件更奇特的事情 是的 尝试一下Zend Cod
  • Laravel 计划命令一旦启动就停止?

    我已经为 laravel 5 1 项目设置了预定命令 它有效 命令已经启动 但愚蠢的是我没有考虑如何停止它 通常您不想停止它 但该命令正在向数据库表中插入近 50 万行 而我只是想确保我可以在不登录服务器的情况下启动它 显然我需要在某个时候
  • array_merge 更改键

    我得到以下数组 arr array 6 gt Somedata 7 gt Somedata1 8 gt Somedata2 问题是 当我使用array merge array Select the data arr 它确实将数组键更改为 A
  • 通过 jQuery 从输入类型=“文件”多个中删除文件

    我在使用 PHP 和 jQuery 上传文件时遇到问题 表单可以一次上传多个图像 这些图像可以在滑块中预览 表单还包含两个字段标题和描述 滑块通过 jQuery 工作 当用户通过单击选择文件来选择多个图像时
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht

随机推荐

  • Mybatis XML中使用枚举

    枚举类 import com baomidou mybatisplus annotation IEnum import com fasterxml jackson annotation JsonCreator import com fast
  • 开源代码监控--码小六(安装使用教程)

    写在前面 众所周知 GitHub 是全球最大的代码托管平台 它在 2019 年报中提到平台已拥有超过 4000 万开发者 全年共创建了 4400 万个仓库 而在庞大的数字的背后 每天却发生着大量的安全泄露 我们需要实时监控 GitHub 防
  • Spark内存管理浅析

    一 内存管理要解决的问题 在执行Spark的应用程序时 Spark集群会启动Driver和Executor两种JVM进程 前者为主控进程 后者负责执行具体的计算任务 Driver和Eexcutor都是JVM进程 Spark内存管理也建立在J
  • 【Linux入门教程】1 简介、文件管理、目录

    Linux入门教程 Linux是一个多用户多任务操作系统 不但被很多开发者用作个人操作系统 还大量运行在Web服务器上 该教程将带你快速了解Linux系统 包括基本概念 Linux命令 Shell脚本 常用工具等 该教程可以让你快速入门快速
  • 渗透测试之三:几款小工具

    1 BurpSuite 参考地址 https www cnblogs com qmfsun p 5458707 html https www jianshu com p 50e496737c80 BurpSuite 是一款使用Java编写的
  • @SuppressWarnings注解详解

    SupperessWarnings 一 简介 java lang SupperessWarnings是J2SE5 0标准的Annotation之一 可以标注在类 字段 方法 参数 构造方法 局部变量上 二 作用 该注解的作用是给编译器一条指
  • 【专题5: 硬件设计】 之 【61.案例四:简易空气净化器,使用硬件产生PWM波并对马达调速】

    嵌入式工程师成长之路 系列文章 总目录 系列文章总目录 希望本是无所谓有 无所谓无的 这正如脚下的路 其实地上本没有路 走的人多了 也便成了路 原创不易 文章会持续更新 欢迎微信扫码关注公众号 承接 小程序 嵌入式 PC端项目开发 联系作者
  • ssh: Could not resolve hostname d: Name or service not known

    ssh Could not resolve hostname d Name or service not known Windows下载Linux服务器文件 除了使用XShell中Xftp或者winscp等其他图形化界面软件外 还可使用类似
  • ST表初识(C++)

    ST表 Sparse Table 稀疏表 一种数据结构 主要用来解决静态的区间最大 最小值问题 主要思想 倍增思想 在看ST表之前 先看一个问题 2 4 1 5 3 在这个序列中找出区间 1 3 3 5 1 5 max 1 3 4 max
  • Krpano全景制作使用笔记

    目录 一 前言 二 软件下载安装 三 软件使用 1 软件文件夹说明 1 docu文件夹 2 templates文件夹 3 viewer文件夹 4 droplet bat文件 a MAKE PANO NORMAL Droplet bat b
  • 5.docker可视化工具(Portainer)

    本文操作 在 192 168 204 102 机器执行 安装最新版 portainer 请使用 portainer portainer ce 镜像 图片来源 https hub docker com r portainer portaine
  • 02搭建Spark单机环境2

    目录 一 在三台虚拟机上面安装lrzsz 二 在三台虚拟机上安装配置jdk 三 配置完全分布模式Hadoop 配置文件 hdfs site xml 配置文件 mapred site xml 配置文件 yarn site xml 四 格式化与
  • [Java初学] 第一次作业 hello.java直接调用同根目录下的其他类 A.java 、B.java、C.java

    hello java public class hello public static void main String args System out println 您好 只需编译我 A a new A a fA B b new B b
  • Zookeeper与kafka

    zookeeper概述 Zookeeperl是一个开源的分布式的 为分布式框架提供协调服务的Apache项目 Zookeeper 工作机制 zookeeper从设计模式角度来理解 是一个基于观察者模式设计的分布式服务管理框架 它负责存储和管
  • win8下找到计算器并转换为程序员模式

    最近想用计算器的十进制和十六进制转化的功能 发现win8没有开始菜单了 从网上查了查 原来指令如此简单 特此做笔记 谨防忘记 操作 win r打开运行 输入calc 确定就出来了 首先看到的界面是 然后我们点击查看 程序员 就变成了 这样我
  • 关于哈工大操作系统实验三出现 task[0] trying to sleep 的解决方法

    问题 最近做哈工大操作系统实验三时明明代码没写错但是执行 run后出现以下情况 原因和解决方法 再各种比对和研究下发现这个问题原因在于加载文件系统的setup不能放在进程0里 不然会导致进程0休眠 可是别人并没有出现这个情况 尝试了网上很多
  • Kafka C++客户端库librdkafka笔记

    目录 目录 1 1 前言 2 2 缩略语 2 3 配置和主题 3 3 1 配置和主题结构 3 3 1 1 Conf 3 3 1 2 ConfImpl 3 3 1 3 Topic 3 3 1 4 TopicImpl 3 4 线程 4 5 消费
  • 工具URL

    流程图 画图工具 https www processon com
  • java 实现TCP和UDP的底层

    JAVA Socket 底层是怎样基于TCP IP 实现的 图片 2012 08 09 22 54 35 标签 java socket连接分类 JavaSE 首先必须明确 TCP IP模型中有四层结构 应用层 Application Lay
  • 在CentOS8中安装PHP8.0

    我的系统版本 cat etc redhat release 1 下载PHP安装文件 网址 https downloads php net pollita wget https downloads php net pollita php 8