无法修改标头信息-复制文件后php错误已发送标头


Cannot modify header information - headers already sent by php error after copying files

我正在将我的wordpress网站转移到另一台服务器上。

我刚刚复制了当前的文件,并通过ftp将它们上传到新的主机中。

现在,当我试图访问该网站时,我得到了以下错误:

Warning: Cannot modify header information - headers already sent by (output started at D:'inetpub'vhosts'domain.co.uk'httpdocs'wp-content'plugins'contact-form-with-captcha'cfwc-main.php:473) in D:'inetpub'vhosts'domain.co.uk'httpdocs'wp-content'plugins'woocommerce'classes'class-wc-session-handler.php on line 63
Warning: Cannot modify header information - headers already sent by (output started at D:'inetpub'vhosts'domain.co.uk'httpdocs'wp-content'plugins'contact-form-with-captcha'cfwc-main.php:473) in D:'inetpub'vhosts'domain.co.uk'httpdocs'wp-includes'pluggable.php on line 875

我没有修改任何文件,只是照原样复制了它们。尝试删除两个文件末尾的任何额外空间,但没有帮助。

此外,我打开了文件cfwc-main.php,其中说明了问题的根源,并删除了后面的空格?>现在我根本无法访问网站并获得

The page isn't redirecting properly

错误。放回空格或键入新空格可以修复重定向错误。

但标题问题仍然存在。

该怎么办?

只需检查出现此错误的文件。您需要删除php标记之间的额外空格,并确保它们不应该是代码末尾的额外空格。

Try By Remove Whitespace before <?php or after ?> 
THERE SHOULD BE NO BLANK SPACES HERE
<?php  
   echo "your code here";
?>
DO CHECK FOR BLANK SPACES HERE AS WELL; THIS LINE (blank line) SHOULD NOT EXIST.

您也可以添加

ob_start();

在解决方案文件的开头。

可能是由于php打开标记之前或php关闭标记之后的额外空间而出现问题。

<?php opening tag
?>  closing tag

因此,请打开列出的有错误的文件,并将内容粘贴到任何其他编辑器中,检查是否有多余的空间并将其删除

它以前对我有用。

我只在少数情况下遇到过这个问题,当我尝试了所有显而易见的方法后,我会回到基础。

  1. 备份现有的cfwc-main.php
  2. 使用纯文本编辑器(例如记事本)创建一个全新的cfwc-main.php文件

开始非常简单:

<?php
  echo "Hello World";
?>
  1. 上传此文件,覆盖现有的cfwc-main.php并进行测试。它会抱怨缺少插件功能,但你不应该看到标题或重定向警告
  2. 一次添加一点原始代码,然后再次测试

例如

<?php
  // add the admin options page
  add_action('admin_menu', 'plugin_admin_add_page');
  function plugin_admin_add_page() {
    add_options_page(
      'Contact Form With Captcha Plugin Page', 
      'Contact Form With Captcha', 
      'manage_options', 
      'contact-form-with-captcha', 
      'plugin_options_page'
    );
  }
?>
  1. 假设没有返回错误/警告,则从那里构建它。我已经把它归结为不可见的控制字符,所以在复制/粘贴时要小心,注意你所做的事情,这样你就可以在出现任何东西时反转它

另一种方法是使用文本编辑器,它会显示不可见的字符(例如Notepad++),并从代码中删除您找到的任何字符。

根据@Priya在其中一个答案下的评论,我禁用了插件(刚刚重命名的插件文件夹),也禁用了另一个导致相同问题的插件,错误已经消失。

感谢