我为magento编写了一个模块,并在我的localhost中进行了测试。它的工作就像一个魅力。
但在上传到服务器后,当我尝试使用以下代码加载产品时:
$product = Mage::getModel('catalog/product')->load($id);
代码执行停止。没有例外。生成日志。没有输出到浏览器。
通过输出到system.log,我能够验证正在使用的正确ID,并且商店中有一个带有该ID的产品。
此加载方法由默认目录/产品控制器使用并且有效,但它在我的模块中不起作用。
我已经进行了debbuged并将其输出到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安装,以确保我的模块能够正常运行而不会与其他预安装的模块发生冲突吗?
答案 0 :(得分:2)
PHP几乎从不“停止”而不会产生错误。暂时编辑index.php
以便
ini_set('display_errors', 1);
和(或在Web服务器中将MAGE_IS_DEVELOPER_MODE
标志设置为true)
if (true || isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
Mage::setIsDeveloperMode(true);
}
此外,检查 php错误日志,查看运行代码时产生的任何错误。