php - 通过 php7.1 后的参数太少。3 个参数通过,4 个参数预期。动态创建图像的脚本
问题描述
消息错误:通过了 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 ;
}
解决方案
推荐阅读
- python - 如何删除此列表中的重复元素?
- python - 如何在 keras 中使用 flow_from_dataframe 输入多张图像?
- php - trim( $str, "()" ) 不工作,有人知道为什么吗?
- javascript - 如何在 Vue 和 Axios 中循环访问 API 端点 JSON 对象?
- python - 根据两列值定义目标
- android - 图标在所有设备上看起来都不一样
- android - 使用 livedata、retrofit、mvvm 和存储库模式制作通用网络适配器
- fortran - 从julia调用Fortran代码,访问在fortran中动态分配的数组
- go - 在 kubectl 插件中,提示输入?
- r - 使用 lapply 循环将自定义函数应用于 R 中的数据框列表