【问题标题】:Cannot modify header information after Wordpress migration [duplicate]Wordpress迁移后无法修改标题信息[重复]
【发布时间】:2013-02-19 15:18:00
【问题描述】:

我意识到这个问题已经被问过很多次了,答案通常是 PHP 标记之前或之后的一些空格,但是我检查了我所有的文件并没有找到任何证据。

我正在使用 Wordpress 并打开了调试模式。我的网站在一个域上运行,但是我最近将它移到了新服务器上(仍在 linux 上运行 apache - 我确实从共享移到了 VPS)并给了它一个新域。我所做的只是wp-config.php中的以下内容:

define('DB_NAME', 'new db name');
define('DB_USER', 'new db user');
define('DB_PASSWORD', 'new db password');
define('WP_HOME','new url');
define('WP_SITEURL','new url');

但是我现在无法登录,我已将其范围缩小到没有设置 cookie 的事实。如果我访问wp-login.php,我会收到以下错误:

Warning: Cannot modify header information - headers already sent by (output started at /home/rcnhca/public_html/wp-includes/load.php:270) in /home/rcnhca/public_html/wp-login.php on line 368

Warning: Cannot modify header information - headers already sent by (output started at /home/rcnhca/public_html/wp-includes/load.php:270) in /home/rcnhca/public_html/wp-login.php on line 380

注意:wp-login.phpload.php 都是 Wordpress 的核心文件。

wp-login.php 的第 368 行是:

header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));

和第 380 行:

setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);

load.php 的第 270 行是:

ini_set( 'display_errors', 1 );

但我也收到以下警告:

Warning: ini_set() has been disabled for security reasons in /home/rcnhca/public_html/wp-includes/load.php on line 270

我相信这是因为我安装了 Suhosin PHP 补丁,但我对此并不确定。我不想运行更易受攻击的 PHP 版本。

我无法弄清楚为什么会发生此错误,我的任何主题的 PHP 文件中都没有尾随空格。

注意:我也意识到我可以使用输出缓冲来解决这个问题,但是我想了解问题发生在哪里,而不是应用会影响我调试能力的一刀切补丁.

【问题讨论】:

  • 我看到你拒绝空格导致这个,我猜你已经检查过你的 HTML 中的 DOCTYPE 上方是否有任何空格?
  • @kjetih 是的,那里没有空格。
  • 但是ini_set() 警告打印在 DOCTYPE 上面没有?这将被视为空白/任何输出,并将触发“无法修改标头”消息。
  • @kjetilh 忽略我之前在 DOCTYPE 上方的评论 - 我的采购审查员重新定位了它。
  • 好的,很高兴你知道了

标签: php wordpress http-headers warnings


【解决方案1】:

ini_set() 警告会导致发送标头,进而触发“无法修改标头”消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多