
PHP 8.1 在 Windows 上启动时提示“Unable to load dynamic library”,即使 php.ini 中已启用扩展且路径正确,根本原因通常是 PHP 运行时缺少必要的 DLL 依赖——需将 PHP 安装目录(如 c:\Webserver\php)添加到系统 PATH 环境变量中。
php 8.1 在 windows 上启动时提示“unable to load dynamic library”,即使 `php.ini` 中已启用扩展且路径正确,根本原因通常是 php 运行时缺少必要的 dll 依赖——需将 php 安装目录(如 `c:\webserver\php`)添加到系统 `path` 环境变量中。
在 Windows 环境下,Apache 以服务形式运行 PHP 时,PHP 的核心扩展(如 curl、mbstring、openssl)不仅依赖 php.ini 中指定的 extension_dir 路径下的 .dll 文件(例如 php_curl.dll),还依赖这些 DLL 所需的运行时动态链接库(如 libssh2.dll、ssleay32.dll、libcrypto-1_1.dll 等)。而这些依赖库通常就存放在 PHP 主安装目录(c:\Webserver\php)中,并未被系统自动识别。
当 PHP 启动时,若系统 PATH 中不包含 PHP 安装路径,Windows 加载器便无法定位这些依赖 DLL,导致报错:
Unable to load dynamic library 'curl' (tried: ext\curl, ext\php_curl.dll) → The specified module could not be found
注意:错误信息中 “The specified module could not be found” 并非指 php_curl.dll 本身缺失,而是其间接依赖的 DLL 找不到——这是 Windows 动态库加载机制的典型表现。
✅ 正确解决步骤如下:
立即学习“PHP免费学习笔记(深入)”;
确认 PHP 安装路径
本例中为:C:\Webserver\php-
添加到系统 PATH 环境变量
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」中找到 Path,点击「编辑」→「新建」→ 输入:C:\Webserver\php
- ✅ 确保不带尾部反斜杠(即 C:\Webserver\php,而非 C:\Webserver\php\)
-
重启所有相关服务与进程
- 必须重启 Windows(或至少重启 Apache 服务 + 所有 CMD/PowerShell 窗口),因为 PATH 变更仅对新启动的进程生效;Apache 服务继承的是启动时的环境变量。
-
验证修复效果
命令行执行:php -m | findstr "curl mbstring openssl"
应正常输出已启用的扩展名;同时访问 phpinfo() 页面,对应模块状态应为 “enabled”。
⚠️ 补充注意事项:
- 不要仅靠修改 Apache 的 envvars 或 httpd.conf 设置 SetEnv PATH —— 这对 PHP 扩展加载无效,因 Windows DLL 加载由操作系统内核级 loader 控制,只认系统级 PATH。
- 若仍报错,请检查 php.ini 中 extension_dir 是否为相对路径(推荐使用绝对路径增强健壮性):
extension_dir = "C:\Webserver\php\ext"
- 确保 php.ini 文件被 Apache 正确加载(可通过 phpinfo() 查看 “Loaded Configuration File” 路径确认)。
完成上述配置后,所有扩展将可正常加载,Apache 错误日志中的 PHP Startup 警告将彻底消失。



















