【发布时间】:2018-07-27 21:01:50
【问题描述】:
我目前在共享托管网络空间上使用 Imagemagick。 Imagemagick 也安装在这个网站上。它的 versionString 是 ImageMagick 6.8.9-9 Q16 x86_64 2018-06-26,它的 versionNumber 是 1673。
现在我的问题或问题:
我想将 REMOTE FILE 例如 https://www.google.com/favicon.ico 转换为 png 图像以供以后使用。为了实现这一点,我目前正在使用这个 PHP 脚本:
<?php
exec( "/usr/bin/convert convert https://www.google.com/favicon.ico favicon.png" );
?>
但此命令不会在同一文件夹中创建文件 favicon.png。但是,如果我下载 favicon.ico 文件并将其存储在服务器上,我可以使用此命令并且它可以完美运行:
<?php
exec( "/usr/bin/convert convert favicon.ico favicon.png" );
?>
那么如何在 imagemagick 中使用带有 convert 命令的远程文件而不将文件存储在我的服务器上?我还尝试使用$Imagick->getImageBlob(); -> https://secure.php.net/manual/de/imagick.getimageblob.php 创建一个新的图像对象,并将输出插入到 exec();像这样的命令
<?php
exec( "/usr/bin/convert convert " . $Imagick->getImageBlob() . "favicon.png" );
?>
在 PHP 中。但它只显示该命令可能是攻击的错误。
希望您能帮我解决这个问题,提前谢谢!
PS: I can not edit anything in the Imagemagick settings or update the class/package either.
【问题讨论】:
-
如果您的命令创建文件失败,可能是因为出于安全原因阻止了 HTTPS。这可能就是您收到该警告的原因。该限制将在 ImageMagick policy.xml 文件中设置,并且可能是默认设置。但只有您的托管服务提供商才能取消该限制。如果您的托管服务提供商允许使用这些工具中的任何一个,您可能需要使用 wget 或 curl 下载文件并将其通过管道传输到 ImageMagick。
-
感谢@fmw42 为您解答。是的 curl 可用。明天我会尝试并联系我的托管服务提供商,询问是否阻止了 https。
标签: php imagemagick exec imagick