原生PHP使用mPDF转HTML表格为PDF时遇LoggerAwareInterface未找到错误
解决「LoggerAwareInterface Not Found in mPdf」错误的实用方案
嘿,我来帮你搞定这个mPDF的报错问题!这个错误其实很好解决,先给你说说原因,再给你两个适合你情况的方案:
为啥会出现这个错误?
新版的mPDF依赖了PSR-3日志规范里的LoggerAwareInterface接口,如果你只是单独下载了mPDF的源码包,没装它需要的配套依赖文件,PHP就找不到这个接口,自然就报错啦。
方案1:手动补依赖(适合不想碰Composer的情况)
如果你实在不想用Composer,那咱们手动把缺的文件补上就行:
- 先下载
psr/log包的源码,找到里面的LoggerAwareInterface.php文件(一般在src文件夹里) - 在你的项目里建个
psr/log/src的目录,把这个接口文件放进去 - 在你的PHP代码开头,先引入这个接口文件,再引入mPDF的类:
要是之后还有类似“找不到XXXInterface”的报错,就去// 先引入缺失的接口 require_once 'psr/log/src/LoggerAwareInterface.php'; // 再引入mPDF的核心类 require_once 'src/Mpdf.php'; // 接下来正常写你的代码 $mpdf = new \Mpdf\Mpdf(); $mpdf->WriteHTML($html); $mpdf->SetWatermarkText('phpflow.COM'); $mpdf->Output(); // 可以直接输出PDF,或者传参数保存到文件psr/log包里把对应的接口文件也补上就行,核心的就是这个LoggerAwareInterface。
方案2:用Composer一键搞定(推荐,其实没你想的复杂)
虽然你说对Composer不太熟,但它就是个自动帮你下依赖的工具,操作超简单:
- 先下载Composer的
composer.phar文件,放到你的项目根目录里 - 在项目根目录新建一个
composer.json文件,内容就写:{ "require": { "mpdf/mpdf": "^8.0" } } - 打开命令行,进到你的项目根目录,执行这条命令:
php composer.phar install - 等它下载完所有依赖,之后你只需要一行代码就能引入所有需要的类,不用再手动一个个引了:
这种方法最省心,不会再缺依赖,而且后续mPDF要更新也很方便。require_once 'vendor/autoload.php'; $mpdf = new \Mpdf\Mpdf(); $mpdf->WriteHTML($html); $mpdf->SetWatermarkText('phpflow.COM'); $mpdf->Output();
小提示
要是你实在不想折腾依赖,也可以试试下载mPDF 7.x及以前的旧版本,这些版本还没依赖PSR-3,直接引入就能用,不过旧版本可能有安全漏洞,还是更推荐用新版配合依赖安装哦~
内容的提问来源于stack exchange,提问作者Mad Coder
相关产品推荐
相关产品推荐

