【填坑指南】PHP8报:Unable to load dynamic library ‘zip.so’ 错误

1.原因分析
这种情况多数发生在PHP安装时因为各种原因失败后,残余的库与最后安装的PHP版本不兼容导致的。
2.我的路径
一开始我按照以前摸索出来的安装PHP7.3的成功经验来编译方法安装PHP8.3,发现以前的套路已经失效了。反复重装PHP8.3失败后,改用Centos 8的仓库方式安装后成功。
3. 使用 DNF 安装 PHP 8
第一步是打开Centos 的 PowerTools 仓库:
nano /etc/yum.repos.d/CentOS-Base.repo (修改系统仓库源)
[PowerTools]
name=CentOS-$releasever - PowerTools
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=PowerTools&infra=$infra
baseurl=https://mirrors.tencentyun.com/centos/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
本例用的是腾讯云的镜像,国内访问比较快。 存盘退出后,重建仓库缓存:
sudo dnf clean all
sudo dnf makecache
确保PowerTools安装成功后, 开始php8的安装流程:
基础安装:
sudo dnf groupinstall "Development Tools"
sudo dnf install epel-release libxml2-devel bzip2-devel curl-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel autoconf bison re2c oniguruma oniguruma-devel libedit-devel
开启remi仓库:
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo dnf module reset php
sudo dnf module list php (查看remi源支持的php版本)
sudo dnf module enable php:remi-8.0 (选择8.0)
sudo dnf install php php-cli php-fpm php-mysqlnd php-devel (安装php8.0基础框架)
下载源码:
wget https://www.php.net/distributions/php-8.0.0.tar.gz
tar -xzvf php-8.0.0.tar.gz
cd php-8.0.0
CFLAGS="-fPIE" ./configure --prefix=/usr/local/php --enable-fpm --with-mysqli --with-zlib --enable-mbstring --enable-soap --enable-intl --with-curl --with-openssl --enable-bcmath --with-iconv
make CFLAGS="-fPIE" LDFLAGS="-pie"
sudo make install
/usr/local/php/bin/php -v
TIPS:
通过这种方式安装的PHP 8, 默认路径如下:
二进制文件: /usr/bin/php
php.ini 设置文件 : /etc/php.ini
www.conf 设置文件: /etc/php-fpm.d/www.conf
以上这堆命令可以成功安装php 8,其中最后一条命令 php -v 是查看php版本号,如果显示无误,那么恭喜你安装成功,不需要再往下折腾了。但是如果报以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/zip.so
说明zip这个扩展没有正常开启,因为现在我们安装的是php 8.0,而我的系统里的php zip 扩展因为前面的反复折腾,已经搞不清楚是哪个版本了,因此报错。
4. 解决方案
首先确定现在的php版本到底是多少:
php -v
忽略错误信息,我们仍然可以从中判断出版本号:
PHP 8.0.30 (cli) (built: Jun 4 2024 15:15:06) ( NTS gcc x86_64 )
然后手动下载8.0.30的源代码并单独安装对应的zip扩展:
wget https://www.php.net/distributions/php-8.0.30.tar.gz
tar zxvf php-8.0.30.tar.gz
cd php-8.0.30
cd ext\zip
phpize
./configure --with-php-config=/usr/bin/php-config
make
make install
php -v
[root@VM-8-2-centos zip]# php -v
PHP 8.0.30 (cli) (built: Jun 4 2024 15:15:06) ( NTS gcc x86_64 )
Copyright © The PHP Group
Zend Engine v4.0.30, Copyright © Zend Technologies
with Zend OPcache v8.0.30, Copyright ©, by Zend Technologies
不仅仅是zip扩展,其他扩展如果也有类似报错,也可以用这个方法解决!
相关文章:
【填坑指南】PHP8报:Unable to load dynamic library ‘zip.so’ 错误
1.原因分析 这种情况多数发生在PHP安装时因为各种原因失败后,残余的库与最后安装的PHP版本不兼容导致的。 2.我的路径 一开始我按照以前摸索出来的安装PHP7.3的成功经验来编译方法安装PHP8.3,发现以前的套路已经失效了。反复重装PHP8.3失败后…...
鸿蒙语言基础类库:【@system.notification (通知消息)】
通知消息 说明: 从API Version 7 开始,该接口不再维护,推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import notification fro…...
1.JavaWeb开发简介(Tomcat安装使用+Servlet简介)
文章目录 一.web开发简介1.概念:2.特点:3.常用技术:4.服务架构5.web应用开发模式6.HTTP协议1)概念:2)HTTP最基本的过程是:3)IP/域名4)HTTP协议请求方式 7.JavaWeb的相关技术8.Java Web服务器 二、安装配置Tomcat1.简介2.Tomcat目录结构 三.Servlet的入门应用1.使用步骤2.使用注…...
xxl-job 动态创建一次性定时任务
文章目录 需求一、考虑方案二、实现思路三、代码实现3.1 引入xxl-core 核心包3.2 远程调用3.2.0 yaml3.2.1 配置类3.2.2 入参3.2.3 任务返回实体3.2.4 任务调用 3.3 cron生成器3.4 handler实现3.4 测试 踩坑 需求 类似预约会议,设置提醒 添加数据记录(…...
网页制作技术:概念、现状与展望?
网页制作技术:概念、现状与展望? 李升伟 网页制作技术是指用于创建和维护网站的一系列技术和方法。 概念: 它涉及多个方面,包括使用 HTML(超文本标记语言)来构建网页的结构和内容,使用 CSS&…...
Kafka Producer之数据重复和乱序问题
文章目录 1. 数据重复2. 数据乱序 为了可靠性,Kafka有消息重试机制,但是同时也带来了2大问题 1. 数据重复 消息发送到broker后,broker记录消息数据到log中,但是由于网络问题,producer没有收到acks,于是再次…...
Java前后端分离开发的步骤以及注意事项
在现代Web应用程序开发中,前后端分离是一种常见的架构模式。这种模式将前端(用户界面)和后端(业务逻辑和数据处理)分开独立开发和部署,从而提高开发效率、代码的可维护性和团队协作能力。本文将介绍Java前后…...
C#绘制阻抗圆图初步
阻抗圆图,或者叫史密斯图,是无线电设计方面用的; 基本的阻抗圆图如下, 下面尝试用C#能不能画一下; 先在网上找一个画坐标的C#类,它的效果如下; 自己再增加一个函数,可以绘制中心在…...
【STC89C51单片机】定时器/计数器的理解
目录 定时器/计数器1. 定时器怎么定时简单理解(加1经过了多少时间)什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器 STC89C51单片机的定时器和计数器(Timers and Counter…...
数据建模标准-关系建模
数据模型定义:DAMA数据治理体系中将数据模型定义为一种文档形式,数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介; 作用:记录数据需求和建模过程中产生的数据…...
Qt日志库QsLog使用教程
前言 最近项目中需要用到日志库。上一次项目中用到了log4qt库,这个库有个麻烦的点是要配置config文件,所以这次切换到了QsLog。用了后这个库的感受是,比较轻量级,嘎嘎好用,推荐一波。 下载QsLog库 https://github.c…...
07. Hibernate 会话工厂(SessionFactory)
1. 前言 Hibernate 的核心价值观是:开发者们!做你们应该做的。脏的、累的、没技术含义的由本尊来做。 本节课和大家一起好好的聊聊 Hibernate 的核心组件之一:会话工厂(SessionFactory)。 通过本节课,你…...
使用Nginx实现高效负载均衡
概述 Nginx是一款高性能的HTTP和反向代理服务器,广泛用于Web服务的负载均衡。它能有效分发流量至多个后端服务器,提高网站的可用性和响应速度,同时增强系统的可扩展性和安全性。本文将介绍如何配置Nginx进行负载均衡,并提供具体的…...
华为OD机考题(基础API)
基础API 字典排序 List<String> listnew ArrayList(); //add list member Arrays.sort(list);List<Map<String,Integer>> listnew ArrayList(); //add list member Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {Over…...
<数据集>UA-DETRAC车辆识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:20500张 标注数量(xml文件个数):20500 标注数量(txt文件个数):20500 标注类别数:4 标注类别名称:[car, van, others, bus] 序号类别名称图片数框数1car201871259342…...
学生管理系统(C语言)(Easy-x)
课 程 报 告 课 程 名 称: 程序设计实践 专 业 班 级 : XXXXX XXXXX 学 生 姓 名 : XXX 学 号 : 231040700302 任 课 教 师 &a…...
C# 解析省份、城市、区域 json文件
一、json文件内容如下,(小程序里好像有用到...): 二、读取包含省份城市区域的json文件,并整理成想要的结果: string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…...
用C语言写的一个扫雷小游戏
头文件 调用头文件和声明函数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#define EASY_CONT 10//声明函数 //初始化棋盘函数 void InitB…...
C++——类和对象(初始化列表和运算符重载与静态与友元)
文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员: 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...
【WPF】图片剪裁-ImageCropping
【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...
Tempera风格在Midjourney中为何始终不达标?:资深提示工程专家拆解v6.1/v6.2渲染底层逻辑
更多请点击: https://intelliparadigm.com 第一章:Tempera风格在Midjourney中的定义性困境 Tempera(蛋彩画)作为一种古老绘画媒介,其细腻笔触、哑光质感与矿物颜料特有的微颗粒反光,在Midjourney等文本到图…...
5分钟极简安装:免费Ghidra逆向工程工具完整配置指南
5分钟极简安装:免费Ghidra逆向工程工具完整配置指南 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 你是否曾因复…...
别再死记硬背了!用这三个二极管等效模型,轻松搞定电路分析(附典型例题)
二极管电路分析的三大黄金法则:从理论到实战的思维跃迁 在电子工程领域,二极管就像电路世界里的"单向阀门",看似简单却暗藏玄机。许多初学者面对复杂二极管电路时,往往陷入盲目试错的困境——要么死记硬背公式ÿ…...
基于堆叠自编码器与LSTM的金融时间序列预测框架解析
1. 项目概述:一个基于多层神经网络的股票回报预测框架如果你对量化交易和机器学习结合感兴趣,并且已经厌倦了那些简单的线性回归或者单层LSTM模型,那么这个名为AIAlpha的项目可能会让你眼前一亮。它不是一个“即插即用”的盈利策略࿰…...
手把手教你用C8051F330自制BLheli电调:从测绘XP-12A到暴力测试70涵道
从零构建BLheli电调:C8051F330硬件逆向与70涵道暴力测试全指南 当你拆开一台现成的航模电调,看到里面密密麻麻的元件时,是否想过自己也能从头打造一个?本文将带你深入电调硬件设计的核心,从测绘商业电调XP-12A开始&…...
茉莉花插件:终极中文文献管理解决方案,三步搞定Zotero中文文献难题
茉莉花插件:终极中文文献管理解决方案,三步搞定Zotero中文文献难题 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasmi…...
Flutter 轻量存储方案介绍、区别、对比和使用场景
在 Flutter 项目中,本地存储通常可以分为几类: 第一类是轻量 Key-Value 存储,例如 shared_preferences、get_storage、mmkv,适合保存开关、配置、登录状态等简单数据。 第二类是安全存储,例如 flutter_secure_storage&…...
Blitz.js全栈开发框架:基于Next.js的Zero-API数据层实践
1. 项目概述:Blitz.js,一个被低估的全栈开发框架如果你和我一样,在过去几年里一直在用 Next.js 构建全栈应用,那你肯定经历过这种场景:前端页面写得飞快,但一到后端 API 路由、数据库操作、身份验证这些环节…...
别再只测SSRF读内网了:手把手教你用dict/gopher协议探测并攻击内网Redis服务
从SSRF到内网Redis渗透:实战进阶指南 发现SSRF漏洞只是开始,真正的挑战在于如何将其转化为实际的攻击路径。当目标内网存在Redis服务时,一个看似简单的SSRF可能成为整个内网沦陷的起点。本文将带你深入探索如何通过dict和gopher协议ÿ…...
控制流验证与硬件性能计数器的融合技术解析
1. 控制流验证与硬件性能计数器的融合在当今云计算和边缘计算环境中,可信执行环境(TEE)已成为保护敏感数据的关键技术。然而,传统的静态验证方法存在一个致命缺陷——它们无法防御运行时攻击。想象一下,你给朋友寄了一…...
