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

解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题

本文已首发于:秋码记录
若你也想搭建一个个人博客,可参考:国内 gitee.com Pages 下线了,致使众多站长纷纷改用 github、gitlab Pages 托管平台

在日新月异的信息化下,软件也在跟随着互联网的脚步,逐步推进着各项计划。

近些年,各大语言像是不约而同的都在改进或优化,从而能让programmer在开发效率上有所提升,还使得软件在升级了新版本的program language加持下,运行速度和处理并发的能力得到前所未有的提升。

Java2014年发布了新的里程碑Java 8版本号,之后,Oracle变向外界承诺每三年发布一个LTS(Long Time Support)长期支持版本,每年的三月份和九月份都发布一个版本。然而,java社区可不管java发布了多少个新版本,他们依旧是在使用Java 8版本。

直到Java 17的发布,且Oracle更改了协议,或许是促使开发者使用Java 17 LTS,由享誉全球Java 开发离不开Spring framework牵头,也就是Spring framework 6.x 及以上版本必须使用Java 17、而Springboot 3.x版本及后续版本也必须是Java 17,因为Srpingboot 3.x依赖的是Spring framework 6.x

php5.6.x版本后,也在响应着互联网的潮流,顺应当下瞬息万变的信息化,也在改进着、优化着,或许试图挽回曾今那句PHP是世界上最好的语言!而努力奋进。

即使我们没有使用PHP新版本的特性,只要你的软件运行在新版本的PHP下,性能那跟之前的,可就没的说了。(这里说的不单单只是PHP,像JavaC/C++PythongolangC#等)

下载 Apache

对于php7.4PHP 5版本而言,可以下载Apache历史版本。

Apache 历史版本链接:https://www.apachelounge.com/download/additional/ 。

在这里插入图片描述

我们将下载下来的压缩包进行解压,打开其根路径下的conf文件夹,用你常用的IDE编辑httpd.conf文件。

#php5 support
LoadModule php5_module "D:/software/php-5.6.30/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
# configure the path of php ini
PHPIniDir "D:/software/php-5.6.30"

有时,你可能还需要开启URL重写模块

在这里插入图片描述

而对于PHP7.X版本,其实是与PHP5.X配置大同小异

#php7 support
LoadModule php7_module "D:/software/php-7.4.8/php7apache2_4.dll"
AddHandler application/x-httpd-php .php .html .htm
#configure the path to php.ini
PHPIniDir "D:/software/php-7.4.8"#startup openssl
LoadFile "D:/software/php-7.4.8/libssh2.dll"
LoadFile "D:/software/php-7.4.8/libcrypto-1_1-x64.dll"
LoadFile "D:/software/php-7.4.8/libssl-1_1-x64.dll"

然而当你将使用了PHP8.xApache配置却不是什么php8_module,而是php_module

#php8 support
LoadModule php_module "D:/software/php-8.2.25/php8apache2_4.dll"
AddHandler application/x-httpd-php .php .html .htm
#configure the path to php.ini
PHPIniDir "D:/software/php-8.2.25"#startup openssl curl
LoadFile "D:/software/php-8.2.25/libssh2.dll"
LoadFile "D:/software/php-8.2.25/libcrypto-3-x64.dll"
LoadFile "D:/software/php-8.2.25/libssl-3-x64.dll"#this is not require ( my english is learning ...)
LoadFile "D:/software/php-8.2.25/libsodium.dll"

php.ini配置文件开启 curl 扩展

我们将下载下来的PHP二进制压缩包,进行解压后,打开它,在根目录下,拷贝php.ini-development一份在同路径下,并重命名为php.ini

PHP各个版本下载链接:https://windows.php.net/downloads/releases/archives/

在这里插入图片描述

修改PHP 扩展的目录。

在这里插入图片描述

根据自己项目的实际情况,开启相应的扩展,只需将分号去掉即可生效。

在这里插入图片描述

至于PHP7.X版本,开启扩展,与PHP5.X也都大抵相似,只是扩展名不再是像PHP5.X那般,而是extension=extension_name,例如CURL扩展则是extension=curl

在这里插入图片描述

然而,到了PHP8.X版本,想要开启curl扩展,总是在Apache下出现Unable to load dynamic library 'curl'的错误。

在这里插入图片描述

解决 php8.x 无法加载 curl 扩展的问题

其实,我们在Apachehttpd.conf配置文件里,已经通过LoadFile的方式来加载dynamic library,可是仍旧加载不了curl这个扩展。

起先,我一度怀疑是不是需要将libssh2.dlllibcrypto-3-x64.dlllibssl-3-x64.dll三个dynamic library(现在我都会文章里适当的插入写英文,一方面是加深了我的单词的记忆,另一方面也能鞭策我不断的学习英语,不管你介不介意,反正我都加了。),拷贝到Apachebin文件夹下或System32目录里呢?

然而,这个错误的想法,没过几秒钟,就被我抛之脑后了。之所以会有将那些文件复制到指定的目录内,那是网上都是这样千篇一律解决方案,如果它可行,我也是不推荐的!

同样是通过LoadFile方式来加载那些dynamic library,为什么PHP7.X却是可以load dynamic library ‘curl'?而php8却出现了Unable to load dynamic library 'curl'的错误呢?

很显然,这不是出现在LoadFile这种加载方式上的错误,从而也就没有必要将那几个dynamic library拷贝到特定的位置上了。

那么,最后便是Apache版本加载不了PHP8.X版本的curl扩展了。

知道了这一点后,我们将再次打开Apache下载链接,下载最新的Apache

在这里插入图片描述

相关文章:

解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题

本文已首发于:秋码记录 若你也想搭建一个个人博客,可参考:国内 gitee.com Pages 下线了,致使众多站长纷纷改用 github、gitlab Pages 托管平台 在日新月异的信息化下,软件也在跟随着互联网的脚步,逐步推进…...

【韩顺平老师Java反射笔记】

反射 文章目录 基本使用反射机制java程序在计算机有三个阶段反射相关的主要类 反射调用优化Class类的常用方法获取Class对象的6种方式哪些类型有Class对象类加载类加载时机类加载过程图 通过反射获取类的结构信息第一组:java.lang.Class类第二组:java.la…...

Arrays.asList()新增报错,该怎么解决

一、前言 在 Java 开发中,Arrays.asList() 是一个常用的工具方法,它允许开发者快速将数组转换为列表。尽管这个方法非常方便,但许多开发者在使用时可能会遭遇一个常见的错误:尝试向由 Arrays.asList() 返回的列表中添加元素时抛出…...

【热门主题】000072 分布式数据库:开启数据管理新纪元

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热…...

基于Springboot开发的云野旅游平台

一、功能介绍 云野旅游平台包含管理员、用户两个角色以及前后台系统。 前台系统功能 用户登录成功后,可以进行查看旅游路线、最新线路、旅游资讯、个人中心、后台管理、购物车、客服等功能模块。进行相对应操作。 后台系统功能 管理员或用户登录成功后&#xf…...

2024金盾信安杯线上赛 MISC ezpng[wp]

下载题目发现给了个password和png 图片发现损坏的 password丢随波逐流一键解 base64 给出解码的结果是 cimbar搜索发现在Github有工具 然后对附件中的图片进行小厨房xor 得到一张新图片 利用工具进行跑出答案...

搭建业务的性能优化指南

这是一篇搭建业务优化的心路历程,也是写给搭建业务的性能优化指南。 前言 直到今天,淘内的页面大多都迁移到了 SSR,从我们终端平台 - 搭建研发团队的视角看,业务大致可以分为两类 —— 搭建派 和 源码派。 这两者互不冲突&#xf…...

电脑提示报错“Directx error”怎么解决?是什么原因导致的?游戏软件提示“Directx error”错误的解决方案

DirectX Error(DX错误)通常指的是在使用基于DirectX技术的应用程序(尤其是游戏)时遇到的问题。这个问题可能由多种因素导致,以下是一些可能的原因及相应的解决方案: 可能的原因 DirectX版本不匹配&#x…...

Linux——自定义简单shell

shell 自定义shell目标普通命令和内建命令(补充) shell实现实现原理实现代码 自定义shell 目标 能处理普通命令能处理内建命令要能帮助我们理解内建命令/本地变量/环境变量这些概念理解shell的运行 普通命令和内建命令(补充) …...

基于matlab程序实现人脸识别

1.人脸识别流程 1.1.1基本原理 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。…...

Unity跨平台基本原理

Unity跨平台基本原理 Unity跨平台基本原理微软的.Net是什么微软做 .Net平台的目的如何实现的.Net跨语言?总结 .Net Framework.Net Framework的体系结构CLR总结 如何实现的跨平台?.Net Core.Net FrameWork 到 .Net CoreMonoMono如何实现跨平台总结如何实现…...

【前端开发】小程序无感登录验证

概述 封装的网络请求库,主要用于处理 API 请求并支持自动处理 token 过期 和 token 刷新,适用于需要身份验证的应用场景,特别是在移动端中。 主要功能 自动附加 Token 在每个请求中自动附加 Authorization 头部,使用存储的 acces…...

Flink常见面试题

1、Flink 的四大特征(基石) 2、Flink 中都有哪些 Source,哪些 Sink,哪些算子(方法) 预定义Source 基于本地集合的source(Collection-based-source) 基于文件的source(…...

spark同步mysql数据到sqlserver

使用Apache Spark将数据从MySQL同步到SQL Server是一个常见的ETL(Extract, Transform, Load)任务。这里提供一个基本的步骤指南,以及一些代码示例来帮助你完成这项工作。 ### 前提条件 1. **安装Spark**:确保你的环境中已经安装了…...

Python Web 开发:FastAPI 基本概念与应用

Python Web 开发:FastAPI 基本概念与应用 目录 ✨ 1. FastAPI 路由(定义请求路径)🚀 2. HTTP 请求方法(GET、POST、PUT、DELETE)🔑 3. 参数类型(路径参数、查询参数、请求体&#…...

Linux设置开启启动脚本

1.问题 每次启动虚拟机需要手动启动网络,不然没有enss33选项 需要启动 /mnt/hgfs/dft_shared/init_env/initaial_env.sh 文件 2.解决方案 2.1 修改/etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要…...

go并发设计模式runner模式

go并发设计模式runner模式 真正运行的程序不可能是单线程运行的,go语言中最值得骄傲的就是CSP模型了,可以说go语言是CSP模型的实现。 假设现在有一个程序需要实现,这个程序有以下要求: 程序可以在分配的时间内完成工作&#xff0…...

nn.RNN解析

以下是RNN的计算公式,t时刻的隐藏状态H(t)等于前一时刻隐藏状态H(t-1)乘以参数矩阵,再加t时刻的输入x(t)乘以参数矩阵,最后再通过激活函数,等到t时刻隐藏状态。 下图是输出input和初始化的隐藏状态,当参数batch_first True时候&…...

How to monitor Spring Boot apps with the AppDynamics Java Agent

本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。 使用 AppDynamics Java 代理可以: 监视应用程序使用环境变量配置 AppDynamics Java 代理 在 AppDynamics 仪表板中检查所有监视数据 How to monitor Spring Boot app…...

Linux学习笔记12 systemd的其他命令

前文已经介绍了systemd在系统初始化中起到的作用和服务的管理和配置。这里补充一下systemd的其他工具和系统进程的管理 前文 Linux学习笔记10 系统启动初始化,服务和进程管理(上)-CSDN博客 Linux学习笔记11 系统启动初始化,服务…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

LangFlow技术架构分析

🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

el-amap-bezier-curve运用及线弧度设置

文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 ‌el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。‌ 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...