微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – hhvm nginx toString服务器错误与Magento Magmi

我正在尝试在一个运行在具有Nginx&的aws ec2实例的Magento应用程序上运行magmi产品导入插件. HHVM就可以了.当我尝试在Magento上运行magmi产品导入应用程序时,我的hhvm错误日志中出现以下服务器错误.

/var/log/hhvm/error.log

\nCatchable Fatal error: Object of class magmi_ProductImportEngine Could not be converted to string in /var/www/qa-hoi/magmi-importer/inc/magmi_mixin.PHP on line 9

这是magmi_mixin.PHP文件

<?PHP
class magmi_Mixin
{
    protected $_callers;

    public function bind($caller)
    {
        $this->_callers[]=$caller;
        $this->_callers=array_unique($this->_callers);  // LINE 9   
    }

    public function unbind($caller)
    {

        $ks=array_keys($this->_callers,$caller);
        if(count($ks)>0)
        {
            foreach($ks as $k)
            {   
                unset($this->_callers[$k]);
            }
        }

    }

    public function __call($data,$arg)
    {
        if(substr($data,0,8)=="_caller_")
        {
            $data=substr($data,8);
        }
        for($i=0;$i<count($this->_callers);$i++)
        {
            if(method_exists($this->_callers[$i],$data))
            {
              return call_user_func_array(array($this->_callers[$i],$data), $arg);
            }
            else
            {
                die("Invalid Method Call: $data - Not found in Caller");
            }
        }
    }
}

知道如何解决这个问题吗?我应该更新我的PHP.ini文件吗?

什么可能导致致命的错误.它不会发生在我的本地机器上,它有Apache.

UPDATE

我在本地机器上安装了HHVM并运行了xdebug.似乎magmi文件中的$caller对象包含几个无法计算的数组.见下面的截图:

解决方法:

我遇到过同样的问题.我的解决方案是简单地注释掉违规行.

    public function bind($caller)
{
    $this->_callers[]=$caller;
    // $this->_callers=array_unique($this->_callers);  // LINE 9   
}

您可能还会发现magmi在/magmi/web/magmi_run.PHP上收到“500 hPHP_invoke”错误.为了解决这个问题,我在第一个if语句中添加一个异常处理程序.我的magmi_run.PHP文件现在读取…

<?PHP
$params = $_REQUEST;
ini_set("display_errors", 1);
require_once ("../inc/magmi_defs.PHP");
require_once ("../inc/magmi_statemanager.PHP");
try {
    $engdef = explode(":", $params["engine"]);
    $engine_name = $engdef[0];
    $engine_class = $engdef[1];
    require_once ("../engines/$engine_name.PHP");
} catch (Exception $e) {
    die("ERROR");
}
if (magmi_StateManager::getState() !== "running") {
    try {
        magmi_StateManager::setState("idle");
        $pf = magmi_StateManager::getProgressFile(true);
        if (file_exists($pf)) {
            @unlink($pf);
        }
        set_time_limit(0);
        $mmi_imp = new $engine_class();
        $logfile = isset($params["logfile"]) ? $params["logfile"] : null;
        if (isset($logfile) && $logfile != "") {
            $fname = magmi_StateManager::getStateDir() . DirsEP . $logfile;
            if (file_exists($fname)) {
                 @unlink($fname);
            }
            $mmi_imp->setLogger(new FileLogger($fname));
        } else {
            $mmi_imp->setLogger(new EchoLogger());
        }
        $mmi_imp->run($params);
    } catch (Exception $e) {
        die("ERROR");
    }
} else {
    die("RUNNING");
}
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐