我意识到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内容。
答案 0 :(得分:0)
这显然是本地问题。
我最近重新安装了Windows,随后又重新安装了Imagick和PHP。
遇到其他类似问题的人,我建议重新安装Imagick(安装起来很麻烦-建议使用这些参考在Windows 10计算机上进行安装:
我还没有亲自尝试过,但是从外观上看,它似乎是imagick与PHP集成的更好方法:ImageMagickPHP(Imagick PHP类,它使用命令行exec而不是PHP版本)。