在 Azure php 服务器上使用 Imagick 安装 Ghostscript

Posted

技术标签:

【中文标题】在 Azure php 服务器上使用 Imagick 安装 Ghostscript【英文标题】:Installing Ghostscript with Imagick on Azure php server 【发布时间】:2016-06-10 08:42:20 【问题描述】:

我在使用 Imagick(在 php 中)将 PDF 文件转换为图像时遇到了一些麻烦。当我尝试这样做时,我收到错误 500。我尝试与我的主机提供商进行故障排除,但他们没有收到任何错误,并且无法更改版本,因为我使用的是共享服务器。然后我有了使用 Azure 的想法,过了很长一段时间我设法在服务器上安装了 Imagick,但是我发现它显然需要 Ghostscript 来处理 PDF 文件。

所以我的问题是,我如何在 Azure 服务器上安装 Ghostscript,或者,是否可以使用 Ghostscript for windows 构建 Imagemagick?

【问题讨论】:

不确定您所说的“Azure 服务器”是什么意思 - 您是在谈论虚拟机吗?云服务(网络/工作者角色)?网络应用程序?你还说你“设法在服务器上安装了 Imagick”——同样,不清楚你做了什么,以及你正在使用什么。 抱歉,我在 Azure 服务器上使用一个 Web 应用程序,运行 PHP 5.6。我已经通过 ftp 设法将 Imagemagick 与 Imagick 一起安装,但是我无法让它识别 Ghostscript 【参考方案1】:

您可以关注https://blogs.msdn.microsoft.com/azureossds/2015/12/07/php-imagemagick-on-azure-web-apps/ 在 Azure Web Apps 上安装 ImageMagick 扩展。然后从http://ghostscript.com/download/gsdnld.html 下载适用于 Windows 的 ghostscript 安装程序。将其安装在本地 PC 上,然后将应用程序文件夹(如 C:\Program Files (x86)\gs\gs9.19)复制到 Azure 站点,与上述步骤相同,如 d:\home\site\gs

修改applicationHost.xdt文件,将gs路径添加到PATH变量中。例如。 <add name="Path" value="%Path%d:\home\site\imagick\;d:\home\site\gs9.19\bin\;" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />.

然后,您可以利用 PHP 脚本中的 exec() 函数来调用 ghostscript cli 命令。喜欢echo exec("gswin32c.exe -h");

【讨论】:

我已经完成了除了路径之外的所有步骤,我将它们放在 2 条单独的行上,这会导致服务器崩溃,但事实并非如此。不幸的是,当我将它与利用 Imagick 的现有 php 一起使用时(据我所知,这使用了 ghostscript)我得到一个 500 错误(内部服务器错误)我认为这是因为它找不到 ghostscript,但也许有其他错误,当我运行 php 脚本时,我得到“请向 bugs.ghostscript.com 报告错误。” 如果你在cmdlet中运行命令gswin32c.exe -h,你会发现输出的最后一行是Please report bugs to bugs.ghostscript.com.。因此,您的脚本中可能还有其他一些错误。您可以启用显示错误以进行故障排除。在脚本顶部添加ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);,然后找到问题。 感谢您的输入,但是 gswin32c.exe -h 给了我与 gswin32c.exe - 相同的输出? .但是我会尝试查看代码以显示错误,但是我不知道他们是否会遇到 500 服务器错误。 命令参数-?-h相同,shell_exec将所有输出流作为字符串返回。 exec 默认返回输出的最后一行,但可以将所有输出作为指定为第二个参数的数组提供。所以你可以使用echo shell_exec("gswin32c.exe -?"); 来查看所有的输出。

以上是关于在 Azure php 服务器上使用 Imagick 安装 Ghostscript的主要内容,如果未能解决你的问题,请参考以下文章

初码-Azure系列-迁移PHP应用至Azure的一些实践记录和思考

Azure 认知服务上的 PHP“Json 格式错误”

在 Ubuntu 上从 PHP 连接到 SQL Azure

如何生成 Azure O365 API 以获取我们使用 php 在 azure 门户上创建的用户详细信息

使用 PHP 在 Microsoft Azure 上创建路径

PHP:Uncaught ImagickException:PDFDelegateFailed