0

我为 magento 编写了一个模块,并在我的本地主机中进行了测试。它就像一个魅力。

但是在上传到服务器后,当我尝试使用以下代码加载产品时:

$product = Mage::getModel('catalog/product')->load($id);

代码执行停止。没有生成异常日志。没有输出到浏览器。

通过输出到 system.log,我能够验证正在使用正确的 id,并且商店中有具有该 id 的产品。

默认目录/产品控制器使用此加载方法并且有效,但它在我的模块中不起作用。

编辑:

我已经调试并让它输出一些东西到system.log。

2013-09-02T20:49:33+00:00 ERR (3): Recoverable Error: Argument 3 passed to Mage_Eav_Model_Entity_Abstract::_canUpdateAttribute() must be an array, null given, called in /home/next/public_html/app/code/core/Mage/Catalog/Model/Resource/Abstract.php on line 545 and defined  in /home/next/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1254
2013-09-02T20:49:33+00:00 ERR (3): Warning: array_key_exists() [<a href='function.array-key-exists'>function.array-key-exists</a>]: The second argument should be either an array or an object  in /home/next/public_html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1256

我不认为这源于我的模块,因为我将它上传到了一个干净的商店并且它工作正常。那家商店安装了近 15 个模块,其中一个可能覆盖了不应该覆盖的东西,或者商店所有者更改了原始 magento 源代码中的某些内容。

我建议逐个模块禁用模块,以便他可以发现导致问题的模块并恢复原始源代码中所有可能的更改,但我不确定店主是否能够做到这一点。

有没有什么办法可以测试当前的magento安装以确保我的模块可以与其他预安装的模块不冲突?

4

1 回答 1

2

PHP 几乎从不“停止”而不产生错误。临时编辑index.php这样

ini_set('display_errors', 1);

和(或MAGE_IS_DEVELOPER_MODE在您的 Web 服务器中将标志设置为 true)

if (true || isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

此外,检查您的php 错误日志以了解运行代码时产生的任何错误。

于 2013-09-02T20:11:51.267 回答