You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel dompdf自定义字体缓存目录配置无效问题求助

解决Laravel-Dompdf v0.8.5自定义字体缓存路径问题

我完全懂你的困扰——自定义字体的缓存文件跑到被Git追踪的storage/fonts目录里,多环境协作时Git状态乱得头疼,改了配置还没效果确实闹心。下面给你几个针对性的解决方案,按优先级来试:

1. 先确认Dompdf配置文件真的生效了

Laravel-Dompdf不会自动生成config/dompdf.php,如果是你手动建的或者没执行发布命令,改的配置根本没被加载:

  • 先执行这条命令生成官方配置文件:
    php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
    
  • 打开生成的config/dompdf.php,确保这两个配置项是你要的路径:
    'font_cache' => storage_path('tmp/font-cache/'),
    'temp_dir' => storage_path('tmp/font-cache/'),
    
    重点:得确保storage/tmp/font-cache目录存在,而且Web服务器用户(比如www-data或者nginx)有读写权限,不然Dompdf会直接 fallback 回默认的缓存路径。

2. 清掉旧缓存,强制重新生成

之前生成的缓存文件已经记住了旧路径,必须先清理干净:

  • 删除storage/fonts/dompdf_font_family_cache.php,还有该目录下那些类似jaldi-normal_xxxxxx的字体缓存文件
  • 手动创建目标缓存目录并设置权限:
    mkdir -p storage/tmp/font-cache
    chmod -R 775 storage/tmp/font-cache
    chown -R www-data:www-data storage/tmp/font-cache # 这里根据你服务器的用户调整,比如本地开发可能用你的用户名
    
  • 重新生成一次PDF,这时候Dompdf应该会把新缓存写到你指定的目录里了。

3. 检查代码里有没有硬编码的配置覆盖

如果你在生成PDF的代码里手动设置了Dompdf选项,会直接覆盖配置文件的设置。比如这种情况:

$pdf = PDF::loadView('pdf.invoice', $data)
    ->setOptions([
        'font_cache' => storage_path('fonts/'), // 这里硬写了旧路径,就会覆盖配置
    ]);

把所有生成PDF的代码都检查一遍,要么删掉手动设置的font_cache,要么改成你想要的路径。

4. 试试调整@font-face的字体路径(可选)

这不是缓存路径的直接原因,但确保字体路径正确能避免其他潜在问题:
如果字体放在public目录,可以用公共路径:

@font-face {
    font-family: 'Jaldi';
    src: url('{{ public_path('fonts/Jaldi/Jaldi-Regular.ttf') }}') format("truetype");
}

要是字体在storage目录,只要服务器本地能读取就行,你原来的写法没问题,但可以确认下路径是否绝对正确。

5. 直接手动初始化Dompdf实例(兜底方案)

如果上面的方法都不行,可能是Laravel封装层的问题,试试绕开服务提供者,手动配置Dompdf:

use Dompdf\Dompdf;
use Dompdf\Options;

$options = new Options();
$options->set('font_cache', storage_path('tmp/font-cache/'));
$options->set('temp_dir', storage_path('tmp/font-cache/'));

$dompdf = new Dompdf($options);
$dompdf->loadHtml(view('pdf.your-view')->render());
$dompdf->render();
return $dompdf->stream();

这种方式能确保配置直接生效,排除Laravel封装的干扰。

按上面的步骤逐一排查,应该就能解决缓存路径的问题了。

内容的提问来源于stack exchange,提问作者guyaloni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:47:34