PHP致命错误:Mpdf\Mpdf类未找到问题求助
解决PHP Fatal Error: Class "Mpdf\Mpdf" not found的问题
咱们一步步拆解你遇到的问题,核心有三个关键点:自动加载路径错误、命名空间版本不匹配、PHP与Mpdf的兼容性冲突,下面逐个说明:
1. 自动加载文件路径错误
你当前代码里引入的是pdf/autoload.php,但通过Composer安装mpdf/mpdf后,正确的自动加载入口应该是Composer统一生成的vendor/autoload.php。除非你手动把mpdf的文件移到了pdf目录,否则这个路径根本找不到对应的文件。
修复方法:把引入代码改成:
require_once __DIR__ . '/vendor/autoload.php';
注意要确保你的pdf.php和vendor目录在同级(也就是C:\xampp\htdocs\server目录下能看到vendor文件夹)。
2. Mpdf版本与命名空间不匹配
你安装的是mpdf/mpdf v6.1.2,这个版本没有使用\Mpdf命名空间——Mpdf类直接在全局命名空间下。而\Mpdf\Mpdf这种写法是mpdf 7.x及以上版本才支持的命名空间规范。
修复方法:把实例化代码改成:
$mpdf = new Mpdf(); // 去掉前面的\Mpdf\前缀
3. PHP版本与Mpdf版本兼容性问题
你用的是PHP 8.1.3,但mpdf 6.x版本的官方要求是PHP 5.4到PHP 7.0,完全不支持PHP 8.x。就算你解决了前面两个问题,后续大概率还会出现语法报错、函数废弃等兼容性问题。
推荐解决方法:升级mpdf到支持PHP8.x的版本(比如最新的8.x系列),执行以下Composer命令:
composer require mpdf/mpdf "^8.0"
升级后,你原来的new \Mpdf\Mpdf;写法就可以正常使用了,记得保持引入vendor/autoload.php。
你可能没理解的相关概念
- Composer自动加载机制:Composer会生成
vendor/autoload.php,统一管理所有依赖包的类加载,不需要手动引入每个包的autoload文件,只要引入这个文件就能自动加载所有已安装的依赖类。 - PHP命名空间:不同版本的库可能调整命名空间结构,mpdf从7.x开始引入
Mpdf命名空间来规范类的组织,旧版本(6.x)还在使用全局命名空间。 - 版本兼容性:每个PHP库都有对应的PHP版本支持范围,安装前一定要确认版本匹配,否则会出现各种无法预料的错误。
最后给你两个修复后的完整代码示例:
升级到mpdf 8.x版本(推荐)
<?php require_once __DIR__ . '/vendor/autoload.php'; $mpdf = new \Mpdf\Mpdf(); $mpdf->WriteHTML('<h1>Hello world!</h1>'); $mpdf->Output();
坚持使用mpdf 6.1.2版本(不推荐,PHP版本不兼容)
<?php require_once __DIR__ . '/vendor/autoload.php'; $mpdf = new Mpdf(); $mpdf->WriteHTML('<h1>Hello world!</h1>'); $mpdf->Output();
内容的提问来源于stack exchange,提问作者Karma
相关产品推荐
相关产品推荐

