【问题标题】:convert from ImageMagick works on command line but not from localhost从 ImageMagick 转换适用于命令行,但不适用于 localhost
【发布时间】:2016-10-02 21:59:43
【问题描述】:

我可以在命令行上毫无问题地使用 ImageMagick 转换功能:

/usr/local/magick/bin/convert a.pdf b.png

然后我把它放在一个名为 testconvert.php 的单行 PHP 文件中:

system("/usr/local/magick/bin/convert a.pdf b.png", $code);

它可以作为 PHP 的命令行调用正常工作:

php testconvert.php

但是,当我在本地主机上从浏览器运行脚本时:

http://localhost/~me/testconvert.php

我得到错误:

转换:没有定义图像 `b.png' @ error/convert.c/ConvertImageCommand/3253

我发现很多人都遇到过类似的问题,并修复了从使用文件的绝对路径(没有帮助)到安装 ghostscript(也没有帮助)。我对此有点过分了。有人对我可以尝试什么有任何想法吗?

谢谢!

【问题讨论】:

  • 感谢您的回答,但没有解决问题。我已经在对答案的评论中进行了解释。

标签: imagemagick


【解决方案1】:

将您的 system() 行更改为:

system("pwd");

你会看到你的脚本在哪个目录运行。

【讨论】:

  • 输出是我所期望的,它是包含脚本的目录 - 但我不确定这对我有什么帮助。当我对脚本进行直接命令行执行(如帖子中所述)时,它也会在目录中运行它。该目录设置了 777 权限,因此它不应该是来自服务器调用的写入错误。
  • @hitlad 好的,尝试将一个 PNG 文件转换为另一个 PNG 文件,然后您将不再依赖于 ghostscript,您将看到它是否有效。另外,尝试在convert 之后添加-verbose,你会看到它在做什么。
  • 它没有问题地进行了转换。当我尝试遵循另一个线程的 ghostscript 建议时,我都安装了 ghostscript 并发现它(版本 9.10)作为现有搜索路径的一部分。也许路径对我有用,但不在 PHP 搜索路径中?
  • 啊,谢谢!现在...如何更改 PHP 搜索路径...似乎 set_include_path(get_include_path() . PATH_SEPARATOR . $gspath);再次,在 shell 中工作,但不能通过浏览器作为脚本。或者,更确切地说,新的包含路径确实包含到 gs 的路径,但是,我做了一个 system('which gs') 它仍然显示为 null。
猜你喜欢
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多