我们创建了一个 Magento 扩展,扩展的模型之一是扩展的设置。我们最终发现将模型文件命名为“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) 在 /xxx/xxx/website/shop/app/code/core/Mage/Core/Model/Session/Abstract /Varien.php 在第 115 行
将文件重命名为其他名称消除了与 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>
...