首页 > 其他 > 详细

Zend Session must be started before any output has been sent to the browser;问题解决

时间:2020-03-18 17:17:35      阅读:81      评论:0      收藏:0      [点我收藏+]

今天升级项目,发现部署后访问报错,

Session must be started before any output has been sent to the browser; outp

原因是在session_start() 有输出或者其他原因。

这也没法检查啊!!!

后来在网上找到了一段程序,检测并删除BOM的,之后就访问正常了。

原文找不到了

贴出程序以供参考:

<?php   
      
    if (isset ( $_GET [‘dir‘] )) { //config the basedir   
      $basedir = $_GET [‘dir‘];   
    } else {   
      $basedir = ‘.‘;   
    }   
    $auto = 1;   
    checkdir ( $basedir );   
      
    function checkdir($basedir) {   
      if ($dh = opendir ( $basedir )) {   
        while ( ($file = readdir ( $dh )) !== false ) {   
          if ($file != ‘.‘ && $file != ‘..‘) {   
            if (! is_dir ( $basedir . "/" . $file )) { // 如果是文件   
              echo "filename: $basedir/$file " . checkBOM ( "$basedir/$file" ) . " <br>";   
            } else {   
              $dirname = $basedir . "/" .$file; // 如果是目录   
              checkdir ( $dirname ); // 递归   
            }   
          }   
        }   
        closedir ( $dh );   
      }   
    }   
      
    function checkBOM($filename) {   
      global $auto;   
      $contents = file_get_contents ( $filename );   
      $charset [1] = substr ( $contents, 0, 1 );   
      $charset [2] = substr ( $contents, 1, 1 );   
      $charset [3] = substr ( $contents, 2, 1 );   
      if (ord ( $charset [1] ) == 239 && ord ( $charset [2] ) == 187 && ord ( $charset [3] ) == 191) { // BOM 的前三个字符的ASCII 码分别为 239 187 191   
        if ($auto == 1) {   
          $rest = substr ( $contents, 3 );   
          rewrite ( $filename, $rest );   
          return ("<font color=red>BOM found, automatically removed.</font>");   
        } else {   
          return ("<font color=red>BOM found.</font>");   
        }   
      } else   
        return ("BOM Not Found.");   
    }   
      
    function rewrite($filename, $data) {   
      $filenum = fopen ( $filename, "w" );   
      flock ( $filenum, LOCK_EX );   
      fwrite ( $filenum, $data );   
      fclose ( $filenum );   
    }   
  

 使用方法:

先备份下一的项目代码:

将以上代码保存到一个文件中(例如a.php),放到webroot下

访问 项目地址/a.php?dir=你的项目目录

浏览器中显示:

技术分享图片

 

 会显示出那些文件自动清除了BOM。

访问页面看看正常了吗。

Zend Session must be started before any output has been sent to the browser;问题解决

原文:https://www.cnblogs.com/kala00k/p/12518212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!