消息错误:通过了 3 个,预期至少有 4 个。我知道 7.1 会产生一个致命错误,但我不明白为什么在这种情况下它需要 4 个参数,并且它说它传递了 3 个参数,而不是 call_user_func_array 通常接受的两个参数。此行指示错误:
$ret = call_user_func_array(array($this->loadedPlugins[$this->availableMethods[$method]], $method), $args);
在阅读了有关 user_func_array 的 php 文档后,我看到数组应该位于第二个位置,所以我尝试将它们反转:
call_user_func_array($args, array($this->loadedPlugins[$this->availableMethods[$method]], $method));
在这种情况下,错误消失但图像未显示。这用于在 php5.6 和 php7 中工作。任何帮助表示赞赏
public function execute($cmd){
$ret = null ;
$out = array();
if($this->escapeChars) {
$cmd= str_replace ('(','\(',$cmd);
$cmd= str_replace (')','\)',$cmd);
}
exec( $cmd .' 2>&1', $out, $ret);
if($ret != 0)
if($this->debug) trigger_error (new phMagickException ('Error executing "'. $cmd.'" <br>return code: '. $ret .' <br>command output :"'. implode("<br>", $out).'"' ), E_USER_NOTICE );
$this->log[] = array(
'cmd' => $cmd
,'return' => $ret
,'output' => $out
);
return $ret ;
}
public function __call($method, $args){
if(! key_exists($method, $this->availableMethods))
throw new Exception ('Call to undefined method : ' . $method);
array_unshift($args, $this);
$ret = call_user_func_array(array($this->loadedPlugins[$this->availableMethods[$method]], $method), $args);
if($ret === false)
throw new Exception ('Error executing method "' . $method ."'");
return $ret ;
}