在MAMP 3.0.5上,带有消息Postscript委托的ImagickException失败

时间:2014-05-02 08:46:00

标签: php macos pdf imagemagick imagick

我尝试使用MAMP 3.0.5将PDF转换为png文件。我知道我的PHP代码工作正常,因为它在我们的Linux服务器上工作正常......

我在Mac OSX 10.8.5上设置了MAMP 3.0.5,当我运行脚本将PDF转换为png文件时,我收到以下错误:

  

致命错误:未捕获的异常'ImagickException',消息'Postscript委托失败'/Applications/MAMP/htdocs/timesheets.com/saas/public_html/timesheets1/timesheets/Daisy_Morris_53635951154c7.pdf':没有这样的文件或目录@ error / pdf.c / ReadPDFImage / 713' <

请帮助,这让我发疯了!

2 个答案:

答案 0 :(得分:2)

我刚发现这篇博文:http://lamp-ios.com/?p=216

问题在于MAMP pro的PATH变量不包括ghost脚本的路径,ImageMagick在PDF操作中使用了该脚本。

修复它的步骤是:

  1. 通过在控制台中输入“which gs”获取ghost脚本的路径
  2. 在你的php中: putenv('PATH ='。getenv('PATH')。':/ opt / local / bin /');
  3. 其中/ opt / local / bin /是gs install的路径

答案 1 :(得分:1)

这可能会有所帮助。我刚刚遇到同样的问题并在几个小时后解决了。

我的第一直觉是确保PHP正在寻找正确的PATH。对我来说,就是这样:

putenv('PATH=' . getenv('PATH') . ':/usr/local/bin');

这本身似乎没什么帮助,但我把代码留在那里,因为在某些时候GhostScript需要知道在哪里找到这些libpng文件。

我的下一步是检查MAMP的Apache错误日志。我发现这可能是罪魁祸首:

dyld: Library not loaded: /usr/local/lib/libpng16.16.dylib
Referenced from: /usr/local/bin/gs
Reason: Incompatible library version: gs requires version 29.0.0 or later, but libpng16.16.dylib provides version 23.0.0

很奇怪,因为我的/ usr / local / lib中的libpng是最新的(1.6.12)。

经过多次试验和错误,我发现从3.0.5开始,MAMP在/ Applications / MAMP / Library / lib

中覆盖了自己的libpng文件

我从/ Applications / MAMP / Library / lib中删除了libpng16.16.dylib,重新启动了MAMP,再次尝试,并收到此错误:

dyld: Library not loaded: /usr/local/lib/libfreetype.6.dylib
Referenced from: /usr/local/bin/gs
Reason: Incompatible library version: gs requires version 18.0.0 or later, but libfreetype.6.dylib provides version 17.0.0

嗯,这是不同的,所以我也从/ Applications / MAMP / Library / lib中删除了libfreetype.6.dylib,并重新启动了MAMP。

此时,一切都开始起作用了。至少对我来说,两个步骤是确保PHP的PATH正在查看正确的目录,然后从MAMP包含的libpng库中删除有问题的文件,迫使PHP使用/ usr /中的最新libpng文件本地/ lib中。