Magento拡張機能を作成しました。拡張機能のモデルの1つは、拡張機能の設定用です。最終的に発見したモデルファイルの名前を「setting.php」にすると、商品への画像のアップロードや送料の計算など、さまざまな機能が機能しなくなりました。
Magentoバージョン1.5.1.0
画像のアップロードが試行されるたびに、次のエラーがvar / log/system.logに記録されていました。
2013-03-26T16:57:20 + 00:00 ERR(3):警告:session_start()[function.session-start]:セッションキャッシュリミッターを送信できません-ヘッダーは既に送信されています(出力は/ xxx / xxx / websiteで開始されました) /shop/our-extension/app/code/local/Company/Extension/Model/Setting.php:14)in /xxx/xxx/website/shop/app/code/core/Mage/Core/Model/Session/Abstract 115行目の/Varien.php
ファイルの名前を別の名前に変更すると、MagentoのVarien.php呼び出しとの競合が解消されました。文書化された理論的根拠が見つからなかったため、これはMagentoのバグのようです。誰かがこれについて何か考えがありますか?
コメントに応じて編集します。
私たちの拡張機能は、追加された拡張機能メニューをクリックすることによってのみ、管理バックエンドでアクセスされます。したがって、この呼び出しは、session_start()の呼び出し中にsettings.phpファイルをロードしているように見えますが、何らかの理由で何かを出力しようとしています。最初に出力にファイルが表示されたので、システムがこのファイルを呼び出す必要がある理由はないと思いました。したがって、ファイルをロードするのは間違いです。しかし、システムとすべての拡張機能から利用できるモデルオブジェクトのコレクションを作成する一環としてロードしているのではないかと思います。ただし、以下に示すように、ファイルには出力がありません。
の内容
/xxx/xxx/website/shop/our-extension/app/code/local/Company/Extension/Model/Setting.php:14
<?php
class Company_Extension_Model_Setting extends Mage_Core_Model_Abstract
{
protected function _construct()
{
$this->_init('extension/setting');
}
}
?>
13行ありますが、メッセージは14行目が出力を開始すると主張していることに注意してください。
config.xmlの一部の内容:
<global>
<models>
<extension>
<class>Company_Extension_Model</class>
<resourceModel>extension_mysql4</resourceModel>
</extension>
<extension_mysql4>
<class>Company_Extension_Model_Mysql4</class>
<entities>
<setting>
<table>extension_settings</table>
</setting>
...