我在rwd主题中添加了一个ajax添加到购物车,并且每个http请求都会调用两次动作控制器。欢迎任何有关解决问题或调试的帮助,我已经失去了2周。这一切都适用于我们的开发环境,但在升级时表现得很奇怪。开发环境在MAMP上本地托管,暂存托管在OVH共享主机上。
edit2:删除了无关的信息
答案 0 :(得分:0)
在error.log中发现此错误消息 FastCGI:comm with server" /..../ staging / index.php"中止:错误解析标题:重复标题'内容类型',引用者:http://staging.xxxx.be/product.html
此处也找到了解决方案:http://blog.imseo.it/2014/09/08/magento-fastcgi-error-parsing-headers-duplicate-header/
解决方法是替换sendHeaders函数 应用程序/代码/核心/法师/核心/控制器/响应/ Http.php
public function sendHeaders()
{
if (!$this->canSendHeaders()) {
Mage::log('HEADERS ALREADY SENT: '.mageDebugBacktrace(true, true, true));
return $this;
}
if (in_array(substr(php_sapi_name(), 0, 3), array('cgi', 'fpm')))
{
// remove duplicate headers
$remove = array('status', 'content-type');
// already sent headers
$sent = array();
foreach (headers_list() as $header)
{
// parse name
if (!$pos = strpos($header, ':'))
continue;
$sent[strtolower(substr($header, 0, $pos))] = true;
}
// raw headers
$headersRaw = array();
foreach ($this->_headersRaw as $i=>$header)
{
// parse name
if (!$pos = strpos($header, ':'))
continue;
$name = strtolower(substr($header, 0, $pos));
if (in_array($name, $remove))
{
// check sent headers
if ($sent[$name])
{
unset($this->_headersRaw[$i]);
continue;
}
// check header
if (!is_null($existing = $headers[$name]))
{
$this->_headersRaw[$existing] = $header;
unset($this->_headersRaw[$i]);
}
else
$headersRaw[$name] = $i;
}
}
// object headers
$headers = array();
foreach ($this->_headers as $i=>$header)
{
$name = strtolower($header['name']);
if (in_array($name, $remove))
{
// check sent headers
if ($sent[$name])
{
unset($this->_headers[$i]);
continue;
}
// check header
if (!is_null($existing = $headers[$name]))
{
$this->_headers[$existing] = $header;
unset($this->_headers[$i]);
}
else
$headers[$name] = $i;
// check raw headers
if (!is_null($existing = $headersRaw[$name]))
unset($this->_headersRaw[$existing]);
}
}
}
parent::sendHeaders();
}