“缺少扩展”指pdf处理方案依赖的php扩展(如mbstring、gd、zlib)未启用,并非yii本身问题;需先确认所用pdf库类型,再通过php -m验证并启用对应扩展,同时确保web与cli环境php.ini一致且已重启服务。

Yii框架获取PDF内容时提示“缺少扩展”,本质是PHP环境未安装PDF解析所需的底层库,不是Yii本身的问题。核心要确认两点:你用的是哪个PDF处理方案,以及对应PHP扩展是否已启用。
确认你用的PDF处理方式
Yii本身不内置PDF解析能力,常见路径有三类:
-
用 mpdf 生成或读取PDF:需 PHP 启用
mbstring、gd(可选但推荐)、zlib;mpdf 本身纯PHP,不依赖外部扩展,但若开启图像嵌入或字体子集功能,gd就变成必需 -
用 PyMuPDF(通过PHP exec 或 REST 调用):这是Python库,PHP层无需扩展,但服务器必须装好Python及
PyMuPDF包;PHP只需exec函数未被禁用 - 用第三方服务(如PDF.js前端解析、后端调API):PHP不直接处理PDF二进制,也就无扩展依赖
检查并启用PHP必需扩展
运行以下命令快速验证:
php -m | grep -E "(mbstring|gd|zlib)"若输出为空或缺某项,说明未启用。根据你的PHP版本和部署方式处理:
- Docker中:在Dockerfile加
RUN docker-php-ext-install mbstring gd zlib,再docker-php-ext-enable mbstring gd zlib - Linux + PHP-FPM:执行
sudo phpenmod mbstring gd zlib,然后重启服务 - Windows XAMPP/WAMP:打开php.ini,取消下列行前的分号:
extension=mbstring、extension=gd、extension=zlib,保存后重启Apache
验证扩展是否真正生效
别只信命令行结果——Web服务器可能加载了另一份php.ini。新建一个info.php放在Web根目录:
访问该页面,搜索mbstring、gd,确认“Loaded Configuration File”路径与你修改的一致,且状态为“enabled”。
排除Composer依赖缺失干扰
如果用的是setasign/fpdi、smalot/pdfparser等纯PHP解析库,它们不依赖PHP扩展,但需要Composer自动加载正常。执行:
并确认vendor/autoload.php已在入口文件中正确引入。若报错Class not found,大概率是自动加载失效或包未安装完整。











