PHP 7.4升级至8.2后FPDF的AddFont方法失效,报文件不存在错误
PHP 8.2升级后FPDF AddFont报错的原因及解决
核心原因
报错提示找不到unisansregular.php,本质是PHP 8.0+对文件路径解析的规则更严格,和PHP 7的相对路径处理逻辑有差异:
- PHP 7中,
include会以当前执行脚本的目录作为相对路径的基准来查找文件; - PHP 8中,当FPDF内部执行
include时,会以fpdf.php所在的目录为基准,导致你原本的相对路径指向的位置不对,自然找不到字体文件。
解决办法
1. 用绝对路径指定字体文件
直接传入字体文件的绝对路径,彻底规避相对路径解析的问题:
// 假设字体文件和当前编写的脚本在同一目录下 $fontFullPath = __DIR__ . '/unisansregular.php'; $pdf->AddFont('Uni-Sans-Regular','',$fontFullPath);
2. 把字体文件放到FPDF的fonts目录
将unisansregular.php以及配套的字体二进制文件(通常是.z后缀),放到FPDF库自带的fonts文件夹里,之后调用时只需要传字体名:
$pdf->AddFont('Uni-Sans-Regular','');
3. 调整PHP的include_path配置
如果不想移动文件或改路径,可以把字体所在目录添加到PHP的include_path中,让PHP能全局找到这个文件:
// 在脚本开头添加,替换成你的字体文件所在目录 ini_set('include_path', ini_get('include_path') . ':/your/font/directory/path');
内容的提问来源于stack exchange,提问作者Anatole
相关产品推荐
相关产品推荐

