我意识到这已经被问过很多次了,答案通常是 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.php
和都是load.php
核心 Wordpress 文件。
第 368 行wp-login.php
是:
header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset'));
和第 380 行:
setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
第 270 行load.php
是:
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 文件中都没有尾随空格。
注意:我也意识到我可以使用输出缓冲来解决这个问题,但是我想了解问题发生在哪里,而不是应用一个万能的补丁,这会影响我的调试能力。