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


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

    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。

    访问页面看看正常了吗。

  • 相关阅读:
    两线段是否相交模板
    树的距离
    Codeforces Round #369 (Div. 2)-D Directed Roads
    Codeforces Round #369 (Div. 2)-C Coloring Trees
    Codeforces Round #374 (Div. 2)-D Maxim and Array
    zstu-4243 牛吃草
    Codeforces Round #447 (Div. 2)
    zstu 4247-萌新的旅行
    CDQ分治求前缀和
    self.faceshowing = !self.facshowing无效,了,原来set
  • 原文地址:https://www.cnblogs.com/kala00k/p/12518212.html
Copyright © 2020-2023  润新知