【问题标题】:Can't Run PHP Imagick from Command Line?无法从命令行运行 PHP Imagick?
【发布时间】:2019-07-10 16:25:28
【问题描述】:

我意识到 Imagick 有它自己的命令行可执行文件,但是为什么每当我尝试运行用 PHP 编写的 Imagick 命令时,它会破坏我的脚本并在没有警告的情况下退出?

做一些简单的事情:

<?php
$imagepath = realpath('1.gif');
var_dump('111');
$image = new Imagick($imagepath);
var_dump('222');
var_dump($image);

在我的命令行界面上运行php -f imagick.php 只是简单地输出string(3) "111",然后在遇到任何Imagick 函数时立即退出。

Imagick 已正确安装在我的机器上,如果我执行 php -m,它会将 Imagick 显示为已安装的模块。

有没有办法让它在命令行脚本中工作(除了使用exec())?

我有点担心它不适用于 cron 作业,但我只是做了一个快速测试,它似乎可以在其中工作(至少在 VPS 上)。

我正在尝试使用 Windows x64 WAMP 服务器 PHP v7.1.16。

注意:澄清一下,这只是一个命令行问题。 Imagick 安装正确,语法没有问题,我已经在浏览器中使用了几个月,没有任何问题。

即使是命令行尝试.. php -d display_errors imagick.php 同样会因 IM 的影响而死,而没有通知 php -n -l -d display_errors -d display_startup_errors imagick.php 带回“无语法错误”。这很奇怪,没有任何东西应该简单地杀死脚本(尽管它确实会尝试加载一秒钟,然后无论它在哪里,它基本上都会从脚本中脱离出来)而没有任何通知......然后再次因为在浏览器中运行它没有问题并且结束了,所以我认为没有任何错误(尤其是对我上面的 Imagick 初始化进行采样).. 这只是我不明白的 CLI 事情。

【问题讨论】:

  • 错误报告似乎已关闭。请在实例化 Imagick 对象之前运行var_dump(error_reporting());
  • 我认为您没有理解@r_a_f 的问题。我已经安装好了,它可以在浏览器中正常工作。当我在命令行中运行一些脚本时,我花了很长时间才弄清楚 Imagick 正在杀死脚本。我有所有我能想到的error_reporting。在命令行上运行时,至少对我而言,它只会杀死其轨道中的脚本,并且不会留下任何痕迹,不会留下任何错误(在日志文件中或屏幕上)。 @arueckauer 除了变量转储(即E_ALL Constant int 32767)之外什么也没显示。
  • 几件事:尝试在脚本开头添加ini_set('display_errors', true);,以便我们可以在问题发生时看到问题。另外-您确定您正确引用了Imagick 类吗?尝试将其引用为\Imagick
  • 就是这样(以及其他可能的错误报告途径)。所有错误都应该报告..并尝试了许多细微的变化,这不是语法问题..它要么是我的机器,要么是 Imagick 本身,或者两者兼而有之。好奇这是否只是我的一个问题,或者更普遍..

标签: php command-line imagick


【解决方案1】:

显然这是一个本地问题。

我最近重新安装了 Windows,随后又重新安装了 Imagick 和 PHP。

其他有类似问题的人我建议重新安装 Imagick(安装起来很痛苦——建议使用这些参考资料在 Windows 10 机器上安装:

我还没有亲自尝试过,但从外观上看,它似乎是 imagick 与 PHP 集成的更好方法:ImageMagickPHP(使用命令行 exec 而不是 PHP 版本的 Imagick PHP 类)。

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多