0

私は magento 用のモジュールを作成し、ローカルホストでテストしました。それは魅力のように働いていました。

しかし、サーバーにアップロードした後、次のコードで製品をロードしようとすると:

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

コードの実行が停止します。exception.log は生成されません。ブラウザへの出力はありません。

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 個のモジュールがインストールされており、そのうちの 1 つがオーバーライドすべきではないものをオーバーライドしているか、ストアの所有者が元の magento ソース コードで何かを変更した可能性があります。

モジュールごとに無効にすることをお勧めしました。これにより、問題の原因となっているモジュールを発見し、元のソース コードで考えられるすべての変更を元に戻すことができますが、ストアの所有者がそれを実行できるかどうかはわかりません。

現在の magento のインストールをテストして、自分のモジュールが他のプレインストールされたモジュールと競合することなく動作することを確認する方法はありませんか??

4

1 に答える 1

2

PHP は、エラーを生成せずに「ただ停止」することはほとんどありません。index.phpというように一時的に編集します。

ini_set('display_errors', 1);

および (またはMAGE_IS_DEVELOPER_MODEWeb サーバーでフラグを true に設定します)

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

さらに、コードを実行したときに生成されたエラーがないか、 php エラー ログを確認してください。

于 2013-09-02T20:11:51.267 に答える