【发布时间】: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_ALLConstant int32767)之外什么也没显示。 -
几件事:尝试在脚本开头添加
ini_set('display_errors', true);,以便我们可以在问题发生时看到问题。另外-您确定您正确引用了Imagick类吗?尝试将其引用为\Imagick。 -
就是这样(以及其他可能的错误报告途径)。所有错误都应该报告..并尝试了许多细微的变化,这不是语法问题..它要么是我的机器,要么是 Imagick 本身,或者两者兼而有之。好奇这是否只是我的一个问题,或者更普遍..
标签: php command-line imagick