无法发送标头;标头已经发送

时间:2013-07-01 19:36:54

标签: magento magento-1.9

大家好,我收到的错误似乎无法解决。

a:5:{i:0;s:93:"Cannot send headers; headers already sent in /home/exowear/public_html/app/Mage.php, line 766";i:1;s:1013:"#0 /home/exowear/public_html/lib/Zend/Controller/Response/Abstract.php(115): Zend_Controller_Response_Abstract->canSendHeaders(true)
#1 /home/exowear/public_html/app/code/core/Mage/Core/Model/App.php(1246): Zend_Controller_Response_Abstract->setHeader('Content-Type', 'text/html; char...')
#2 /home/exowear/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(80): Mage_Core_Model_App->getResponse()
#3 /home/exowear/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(202): Mage_Core_Controller_Varien_Front->getResponse()
#4 /home/exowear/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#5 /home/exowear/public_html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#6 /home/exowear/public_html/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#7 /home/exowear/public_html/index.php(87): Mage::run('', 'store')
#8 {main}";s:3:"url";s:10:"/index.php";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

我正在尝试在实时域上设置它,但我一直在遇到这个问题。它在我的测试服务器上工作正常。 http://mytempsite.net/sin但是当我把它带到http://vegassinexoticwear.com时,我收到了这个错误。

我尝试了什么

  • 我备份了临时站点上的整个目录,并使用SSH将其转移到新服务器。然后我导出了数据库并将其导入新数据库。更改core_config_data表中的URL。清除缓存甚至检查权限。
  • 我安装了magento的新副本,并将app,skin和media文件夹全部分开。在把它带到那里之前没有错误,但是一旦我把app文件夹放了,我又得到了这个错误。

为什么它可以在一台服务器上运行而不在另一台服务器上运行?

已编辑/其他详情 这是我试图去网站时没有得到的错误。

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 4: parser error : StartTag: invalid element name  in /home/exowear/public_html/sin/lib/Varien/Simplexml/Config.php on line 510

#0 [internal function]: mageCoreErrorHandler(2, 'simplexml_load_...', '/home/exowear/p...', 510, Array)
#1 /home/exowear/public_html/sin/lib/Varien/Simplexml/Config.php(510): simplexml_load_string('loadString('loadFile('/home/exowear/p...')
#4 /home/exowear/public_html/sin/app/code/core/Mage/Core/Model/Config.php(315): Mage_Core_Model_Config->_loadDeclaredModules()
#5 /home/exowear/public_html/sin/app/code/core/Mage/Core/Model/App.php(414): Mage_Core_Model_Config->loadModules()
#6 /home/exowear/public_html/sin/app/code/core/Mage/Core/Model/App.php(343): Mage_Core_Model_App->_initModules()
#7 /home/exowear/public_html/sin/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#8 /home/exowear/public_html/sin/index.php(87): Mage::run('', 'store')
#9 {main}

当我查看Config.php第510行时,这就是

$xml = simplexml_load_string($string, $this->_elementClass);

整个功能就是这个

 */
public function loadString($string)
{
    if (is_string($string)) {
        $xml = simplexml_load_string($string, $this->_elementClass);

        if ($xml instanceof Varien_Simplexml_Element) {
            $this->_xml = $xml;
            return true;
        }
    } else {
        Mage::logException(new Exception('"$string" parameter for simplexml_load_string is not a string'));
    }
    return false;
}

保存了我的local.xml文件,确保在DW CS6中取消选中了BOM

 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 /**
  * Magento
  *
  * NOTICE OF LICENSE ......
  -->
 <config>
     <global>
         <install>
             <date><![CDATA[Mon, 10 Jun 2013 16:34:40 +0000]]></date>
         </install>
         <crypt>
             <key><![CDATA[9a38bb0fba550a5d295b3789fe2dafee]]></key>
         </crypt>
         <disable_local_modules>false</disable_local_modules>
         <resources>
             <db>
                 <table_prefix><![CDATA[]]></table_prefix>
             </db>
             <default_setup>
                 <connection>
                     <host><![CDATA[localhost]]></host>
                     <username><![CDATA[usernamehere]]></username>
                     <password><![CDATA[passwordhere]]></password>
                     <dbname><![CDATA[dbnamehere]]></dbname>
                     <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                     <model><![CDATA[mysql4]]></model>
                     <type><![CDATA[pdo_mysql]]></type>
                     <pdoType><![CDATA[]]></pdoType>
                     <active>1</active>
                 </connection>
             </default_setup>
         </resources>
         <session_save><![CDATA[files]]></session_save>
     </global>
     <admin>
         <routers>
             <adminhtml>
                 <args>
                     <frontName><![CDATA[admin]]></frontName>
                 </args>
             </adminhtml>
         </routers>
     </admin>
 </config>

8 个答案:

答案 0 :(得分:2)

让我们一起尝试调试。 在Mage.php文件第766行

$localConfigFile = $etcDir . DS . 'local.xml';

    if (is_readable($localConfigFile)) {
        $localConfig = simplexml_load_file($localConfigFile);
        date_default_timezone_set('UTC');
        if (($date = $localConfig->global->install->date) && strtotime($date)) {
            self::$_isInstalled = true;
        }
    }

所以Magento在这里尝试做的是加载app/etc/local.xml

我的猜测是,当您更改数据库名称/用户名/密码时,您错误地保存了文件(某些编辑者添加了BOM签名)。 local.xml文件应该保存为UTF8而不带BOM选项。

答案 1 :(得分:0)

启用错误报告并尝试创建日志文件

Mage :: log('无法发送标题;标题已经在'。$ file。',line'。$ line中发送);

答案 2 :(得分:0)

还有一个标题已经发送的原因

在index.php中添加了任何echo然后显示错误,并在var / reports中显示已经发送的标题错误

如果添加任何回声,请检查index.php,然后将其删除

答案 3 :(得分:0)

很多时候这个问题来自文件许可

所以请设置适当的文件权限以获取更多信息

http://www.magentocommerce.com/wiki/groups/227/cache_is_not_writable

答案 4 :(得分:0)

是的,针对当前问题,该错误的问题仅为“]”。尝试检查新的主机详细信息,用户名和密码。另外,正确的添加方式。

答案 5 :(得分:0)

处理您的请求时出错

无法发送标头;标头已在/var/www/leaveasy.com/Leaveasy/app/Mage.php, line 767中发送:

跟踪:

#0 /var/www/leaveasy.com/Leaveasy/lib/Zend/Controller/Response/Abstract.php(115): Zend_Controller_Response_Abstract->canSendHeaders(true)
#1 /var/www/leaveasy.com/Leaveasy/app/code/core/Mage/Core/Model/App.php(1246): Zend_Controller_Response_Abstract->setHeader('Content-Type', 'text/html; char...')
#2 /var/www/leaveasy.com/Leaveasy/app/code/core/Mage/Core/Controller/Varien/Front.php(80): Mage_Core_Model_App->getResponse()
#3 /var/www/leaveasy.com/Leaveasy/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(202): Mage_Core_Controller_Varien_Front->getResponse()
#4 /var/www/leaveasy.com/Leaveasy/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#5 /var/www/leaveasy.com/Leaveasy/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#6 /var/www/leaveasy.com/Leaveasy/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#7 /var/www/leaveasy.com/Leaveasy/index.php(89): Mage::run('', 'store')
#8 {main}

Error log record number: 724004798

答案 6 :(得分:0)

我最近遇到了这个问题,我能够自己修复它。我查看了我的local.xml,发现了一个额外的字符å字符,因为我在键盘上按OPTION + A而不是CONTROL + A时意外输入并保存了它。:)

答案 7 :(得分:0)

这可能由于多种原因而发生。要找出影响您的原因,请按照以下说明进行操作:

而不是在浏览器中打开页面,而是在命令行中运行:

curl http://yourpage.com/

在发送标头之前,您将得到错误和/或正在写入的数据。

示例,我明白了:

<br />
<b>Warning</b>:  file_put_contents(/var/www/html/var/log/system.log): failed to open stream: Permission denied in <b>/var/www/html/app/Mage.php</b> on line <b>832</b><br />
<br />
<b>Warning</b>:  chmod(): Permission denied in <b>/var/www/html/app/Mage.php</b> on line <b>833</b><br />
<script type="text/javascript">window.location.href = 'http://bluepowershop.localhost/errors/report.php?id=629963827323&skin=default';</script>

这意味着我必须设置我的权限才能使var / log文件可写。