Imagick不会打开“无法读取文件”异常的pdf文件

时间:2016-06-20 16:15:23

标签: php pdf imagemagick imagick php-7

尝试从php脚本打开PDF文件会出错,错误:

Uncaught ImagickException: Failed to read the file in ...

我正在运行OS X,Brew,PHP 7.0,php70-imagick --HEAD,ImageMagick --with-ghostscript,GhostScript

命令行测试工作正常:

convert 1.pdf 1.jpg

文件权限没问题。尝试使用具有realpath功能的URL和本地文件,因此filepath也可以。如果打开jpeg,脚本可以正常工作。

phpinfo() -> ImageMagick supported formats: EPDF, PDF, PDFA, etc.

更新:已解决。解决方案如下。

2 个答案:

答案 0 :(得分:15)

这个问题与ghostscript的路径有关。它位于" / usr / local / bin",但此路径不可用于Apache。 (phpinfo - > Apache Environment - > PATH)

解决方案是将符号链接文件转到另一条路径:

 sudo ln -s /usr/local/bin/gs /usr/bin/gs

OS X El Capitan注意! / usr / bin /在OS X 10.11+中受到保护。您必须按照以下步骤操作:

1. Reboot to Recovery Mode. Reboot and hold "Cmd + R" after start sound.
2. In Recovery Mode go to Utilities -> Terminal.
3. Run: csrutil disable
4. Reboot in Normal Mode.
5. Do the "sudo ln -s /usr/local/bin/gs /usr/bin/gs" in terminal.
6. Do the 1 and 2 step. In terminal enable back csrutil by run: csrutil enable

答案 1 :(得分:2)

这是在OS X上更新Apache路径变量的更好方法,它不需要符号链接(因此不需要禁用SIP):

https://www.euperia.com/development/solved-php-imagick-unable-to-open-image-pdf