当前位置: 首页 > news >正文

【填坑指南】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失败后&#xf…...

鸿蒙语言基础类库:【@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车辆识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;20500张 标注数量(xml文件个数)&#xff1a;20500 标注数量(txt文件个数)&#xff1a;20500 标注类别数&#xff1a;4 标注类别名称&#xff1a;[car, van, others, bus] 序号类别名称图片数框数1car201871259342…...

学生管理系统(C语言)(Easy-x)

课 程 报 告 课 程 名 称&#xff1a; 程序设计实践 专 业 班 级 &#xff1a; XXXXX XXXXX 学 生 姓 名 &#xff1a; XXX 学 号 &#xff1a; 231040700302 任 课 教 师 &a…...

C# 解析省份、城市、区域 json文件

一、json文件内容如下&#xff0c;&#xff08;小程序里好像有用到...&#xff09;: 二、读取包含省份城市区域的json文件&#xff0c;并整理成想要的结果&#xff1a; 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++——类和对象(初始化列表和运算符重载与静态与友元)

文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员&#xff1a; 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...

【WPF】图片剪裁-ImageCropping

【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...