Imagick / ImagickDraw setFont和setFontFamily超时

时间:2017-12-28 17:57:23

标签: php fonts imagemagick imagick

我有一个PHP脚本,它使用Imagick / ImageMagick根据需要使用数据库中的数据动态构建图像。这在过去几年一直运行良好但我重新启动(在安装一些OSX更新之后)该网站之前运行的硬件,突然之间它现在无法正常工作。

Apache error_log文件表示脚本在ImagickDraw对象上调用setFont(' Arial')的行超时。我已经尝试将参数更改为字体文件的完整路径(/Library/Fonts/Arial.ttf),但它也是如此。我还尝试将字体文件复制到与PHP脚本相同的文件夹中,并使用' ./ Arial.ttf'加载它。但结果仍然相同。如果我注释掉该行,那么当我将ImagickDraw对象传递给Imagick-> annotate_image()方法时(当我猜测它试图分配默认字体或类似字体时),脚本仍会超时。 / p>

经过多次谷歌搜索后,我尝试过......

  • 通过调用' fc-cache'
  • 重建操作系统上的字体缓存
  • 检查我有正确的字体文件路径,PHP可以查看'通过在本地路径和完整路径上调用file_get_contents()
  • 重启机器几次

......但这些都还有时间。它似乎只是在加载字体时遇到问题。我的测试脚本是:

$settings = new ImagickDraw();
$settings->setFillColor( '#92a7d2' );
$settings->setFontSize( 36 );
//$settings->setFont( '' ); // Throws an exception 'Can not set empty font' (as it should)
//$settings->setFont( './Arial.ttf' ); // Times out
//$settings->setFont( 'Arial' ); // Times out
//$settings->setFont( "/Library/Fonts/Arial.ttf" ); // Times out
//$settings->setFontFamily( 'Arial' ); // Times out

甚至调用\ Imagick :: queryFonts(" *")/ php_imagick_check_font()超时。

我现在不知所措。这似乎与加载字体有关,但我无法解决原因,而且它应该随机出现,这似乎很奇怪。

有什么想法吗?

identify -list Configure | grep freetype ...

的结果

CFLAGS -I / opt / local / include / libxml2 -I / opt / local / include / libpng16 -D_THREAD_SAFE -I / opt / local / include / OpenEXR -I / opt / local / include -I / opt / local /include/openjpeg-2.1 -I / opt / local / include -I / opt / local / include / freetype2 -I / opt / local / include -I / opt / local / include / freetype2 -I / opt / local / include -I / opt / local / include / freetype2 -I / opt / local / include -I / opt / local / include -I / opt / local / include -pipe -Os -arch x86_64 -Wall -mtune = sandybridge -fexceptions - D_FORTIFY_SOURCE = 0 -D_THREAD_SAFE -pthread -DMAGICKCORE_HDRI_ENABLE = 0 -DMAGICKCORE_QUANTUM_DEPTH = 16 代表bzlib djvu mpeg fftw fontconfig freetype gslib jbig jng jpeg lcms lzma openexr openjp2 png ps tiff webp x xml zlib LIBS -L / opt / local / lib -llcms2 -L / opt / local / lib -lfreetype -L / opt / local / lib -lfftw3 -L / opt / local / lib -lfontconfig -lfreetype -lXext -lSM -lICE- lX11 -lXt -L / opt / local / lib -llzma -lbz2 -L / opt / local / lib -lz -lltdl -lm

0 个答案:

没有答案