php在windows下报“缺少dll”错误的本质是运行时找不到依赖的动态链接库,需根据错误提示定位缺失dll,检查位数/vc版本匹配,并将dll放至php.exe同目录或path路径中。
PHP 源码在 Windows 下运行报“缺少 DLL”错误,本质是 PHP 运行时找不到它依赖的动态链接库(比如 php7.dll、libmysql.dll、ssleay32.dll 等),不是 PHP 本身坏了,而是 PATH 或扩展路径没对上。
确认缺失的是哪个 DLL 文件
错误提示通常会明确说缺什么,比如:The program can't start because php7.dll is missing from your computer 或者命令行执行 php -v 报 0xc000007b、0xc0000135 等错误码,背后往往也是某个 DLL 加载失败。别猜,先看报错原文里出现的 .dll 文件名。
- 如果用的是 Apache + mod_php,检查 Apache 错误日志(
error.log)里有没有更具体的 DLL 加载失败记录 - 如果用的是 CLI 模式,直接在 CMD 中运行
php -m,观察哪一行扩展加载失败,再查对应扩展的extension=xxx.dll配置项指向的文件是否存在 - 用工具如
Dependencies.exe(替代旧版 Dependency Walker)打开报错的 DLL(如php7.dll),它会列出所有直接依赖项,并标出缺失项
补全 DLL 的三个常见位置
Windows 下 PHP 加载 DLL 不是只认一个地方,它按顺序查找:当前目录 → PATH 环境变量里的路径 → php.ini 中 extension_dir 指向的目录(仅限扩展 DLL)→ 系统 System32(不推荐放这里)。
- 把缺失的 DLL 放到 PHP 主程序同目录下(比如
C:\php\php.exe和php7.dll在同一层),最简单有效 - 把包含 DLL 的目录加进系统
PATH(如C:\php\ext或C:\php\),注意要重启 CMD 或终端生效 - 如果是扩展依赖的 DLL(比如
php_mysqli.dll需要libmysql.dll),就把libmysql.dll放到和php.exe同目录,而不是ext/目录里——扩展 DLL 自己放在extension_dir,但它依赖的底层库必须能被系统 loader 找到
注意 32/64 位和 VC 编译器版本匹配
很多 DLL 找不到,其实是“找到了但加载失败”,典型表现是报错代码 0xc000007b(STATUS_INVALID_IMAGE_FORMAT)。这说明位数或运行时库不兼容。