Laravel 9中imagettftext()报错:无效字体文件名的解决咨询
Laravel 9中imagettftext字体文件调用问题解决
字体文件存放位置
- 推荐存放在
public/fonts目录:这是Laravel的Web可访问目录,便于统一管理静态资源,且PHP进程默认有读取权限。 - 也可选择
storage/app/fonts目录:适合不想对外暴露的字体文件,需确保PHP进程对该目录有读取权限(可通过chmod 755 storage/app/fonts设置权限)。
正确调用方式
直接使用字体文件名会导致PHP在当前执行目录查找文件,必须传入绝对路径才能正确定位。Laravel提供了两个辅助函数来快速获取目录绝对路径:
情况1:字体存放在public/fonts
public function singleChar($text) { // 获取字体文件的绝对路径 $font = public_path('fonts/SansBold.ttf'); // ... 其他代码 imagettftext($img, $size, $angle + 5, $textX + 5, $textY + 10, $shadowgbColor, $font, $text); // ... 其他代码 }
情况2:字体存放在storage/app/fonts
public function singleChar($text) { // 获取字体文件的绝对路径 $font = storage_path('app/fonts/SansBold.ttf'); // ... 其他代码 imagettftext($img, $size, $angle + 5, $textX + 5, $textY + 10, $shadowgbColor, $font, $text); // ... 其他代码 }
额外注意事项
- 确认字体文件真实存在,文件名大小写与代码中一致(Linux服务器区分大小写)。
- 检查字体文件权限,确保PHP进程可读取(一般设置为
644即可)。
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

