2

这个问题很接近,但没有解决问题。我正在尝试将 pdf 转换为 jpg(用于缩略图)。这是我正在运行的命令:

convert -quality 100 -density 200x200 /path/file.pdf /path/file.jpg

我已经正确安装了 mamp pro 1.7.2、imagemagick、ghostscript 并正常工作。此命令在 shell 中完美运行,但在 php 脚本中运行时失败。另一个转折是图像到图像的转换,外壳和脚本都可以完美地工作。这会让我相信在 apache/php 环境中存在一些与 ghostscript (gs) 相关的路径问题,尽管 gs 二进制文件与转换二进制文件位于同一目录中。此外,我已经调整了 mamp apache envars per ( brybot.ca 的优秀教程 -- www.brybot.ca/archives/getting-imagemagick-and-more-to-work-with-mamp-on-os-x/ ) 所以ImageMagick 运行良好,并且“/opt/local/bin”在我的 apache 路径变量中。

通过外壳,从 pdf 到图像的转换需要一些时间,我有一个唠叨的想法,即 php 脚本在 imagemagick / ghostscript 转换完成之前终止/完成,并可能中止 imagemagick 转换过程......?我试过 exec、system、shell_exec 都无济于事。

我没有从命令中得到任何输出,似乎什么也没发生,apache 或 php 日志中也没有任何显示。

更新:现在我在重新启动 MAMP 后在 apache 日志中收到以下错误

convert: unable to create temporary file `/path/file.pdf': Permission denied @ pdf.c/ReadPDFImage/358. convert: missing an image filename `/path/file.jpg' @ convert.c/ConvertImageCommand/2766.

有人有想法么?我正在为此拔头发...

非常感谢!

4

2 回答 2

2

Apache 通常在您的服务器上具有有限的权限(这就是您想要的),尝试将文件放入您知道 apache 具有写入权限的 /tmp 中。Apache 也可能无法读取其他用户创建的文件,除非它们是世界可读的。

于 2009-07-15T01:28:47.963 回答
0

我读了一些文章,使用 exec 使用 shell 命令不是最好的,更好的方法是在 php 中使用内置的 Imagick。更多你读到链接

谢谢有梦想的一天

于 2010-11-18T04:46:12.847 回答