首页 > 解决方案 > 通过 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 ;
}

标签: phpcall-user-func-array

解决方案


推荐阅读