PHP中curl扩展未启用导致curl_init()报错,需确认phpEnv对应版本php.ini中已取消extension=curl注释、extension_dir路径正确、php_curl.dll及libeay32.dll等依赖DLL存在于PHP根目录,并重启Web服务而非仅面板。

phpEnv里curl扩展没启用
phpEnv默认不开启curl扩展,所以调用curl_init()时直接报“未定义函数”。这不是PHP版本或代码问题,而是扩展模块处于禁用状态。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
向CurlShip提交产品,这是一个对机器人友好的SaaS目录。只需一条curl命令即可发布产品,支持OG标签抓取、带徽章的dofollow链接及层级升级。
- 打开phpEnv安装目录下的
php\ext文件夹,确认存在php_curl.dll(Windows)或php_curl.so(Linux/macOS模拟环境极少用phpEnv,此处按Windows处理) - 编辑对应PHP版本的
php.ini(路径类似:phpEnv\php\php-8.1.12\php.ini),搜索;extension=curl,去掉前面的分号,改为extension=curl - 若该行不存在,手动在
; Dynamic Extensions区域下方添加extension=curl - 保存后重启phpEnv的Web服务(如Apache/Nginx)或CLI终端
php.ini路径选错了导致修改无效
phpEnv支持多版本PHP共存,每个版本有独立的php.ini。用php --ini查到的配置路径,和Web服务器实际加载的可能不是同一个——尤其当你在面板切换过PHP版本但没刷新服务时。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 在Web页面中新建
info.php,内容为<?php phpinfo(); ?>,访问后搜索“Loaded Configuration File”,看真实生效的php.ini路径 - 确认该
php.ini里已写入extension=curl且无拼写错误(比如写成extention或curl_ext) - 检查
extension_dir是否指向正确的ext目录,例如:extension_dir = "D:/phpEnv/php/php-8.1.12/ext"
Windows系统缺少DLL依赖导致curl_init仍失败
即使启用了扩展,curl_init()仍报错,常见原因是php_curl.dll依赖的libssh2.dll、ssleay32.dll、libeay32.dll等缺失或版本不匹配——这些文件本应随phpEnv一并提供,但某些精简版或手动更新后容易丢失。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 进入phpEnv的PHP目录(如
D:\phpEnv\php\php-8.1.12),检查根目录下是否存在libssh2.dll、ssleay32.dll、libeay32.dll - 若缺失,从完整版phpEnv包中复制过来,或从同版本官方Windows PHP二进制包中提取(注意必须严格匹配线程安全TS/NTS和架构x64/x86)
- 确保这些DLL文件与
php.exe在同一目录,不要只放在ext里
CLI和Web环境curl状态不一致
你在命令行跑php -m | findstr curl看到curl已加载,但浏览器访问就报错,说明CLI和Web用的是两套php.ini,或者Web服务没真正重载配置。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 分别执行
php --ini(CLI)和phpinfo()(Web)对比“Loaded Configuration File”路径 - 修改完Web用的
php.ini后,必须重启Apache/Nginx服务,不能只重启phpEnv面板 - 部分phpEnv版本在面板里点“重启服务”不彻底,建议任务管理器结束
httpd.exe或nginx.exe进程后再启动
php.ini根本不是你编辑的那个,以及DLL文件不在PHP主目录而只丢在ext里。


















