无法发送会话缓存限制器-已发送的标头-CodeIgniter(Session.php)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法发送会话缓存限制器-已发送的标头-CodeIgniter(Session.php)相关的知识,希望对你有一定的参考价值。

我知道这已经被讨论很多次了,但是我认为情况有所不同。

我正在对如下所示的php方法进行简单的ajax调用:

public function updateAbout()

    log_message('debug', "updateAbout is called", false);   

     log_message('debug',$this->input->post('fname'), false);

   log_message('debug', "updateAbout success", false);   


在此方法中,我只是尝试获取通过ajax调用传递的数据。

但是我没有通过ajax调用发布数据,而是收到2个错误:

Severity: Warning --> session_start(): Cannot send session cache limiter - headers already sent ...\..\\libraries\Session\Session.php 143
Severity: Warning --> Cannot modify header information - headers already sent ..\..\libraries\Session\Session.php 171

注意:

我在项目的任何地方都没有使用session_start()

此错误指向CodeIgniter库的Session.php文件中的session_start()方法。它没有指向我的代码中的任何地方,所以我不确定在哪里寻找问题。

我已经检查了整个互联网上的答案,但似乎都没有解决这个问题。

为什么会出现此错误,如何防止此错误?

编辑:

根据其他答案的建议,我已经检查并删除了我所有代码中的<?php ?>中的空格。

这是我的JavaScript代码,在这里进行ajx调用。

      $("#btnupdateAbout").click(function()

      $fname=$("#updatefname").val();
      $lname=$("#updatelname").val();
      $country=$("#updatecountry").val();
      $locality=$("#updatelocality").val();

      if($('#optradioMale').is(':checked'))  $gender="Male"; 
      else$gender="Female";

       $.ajax(

           url:"http://localhost/Voyager/ProfileControls/updateAbout",
           data:'fname':$fname,'lname':$lname,'country':$country,'locality':$locality,'gender':$gender,
           method:"POST",
           contentType:false,
           cache:false,
           processData:false,

           success:function()

           

       );
   );
答案

[在ajax调用期间在浏览器中使用F12,然后在控制台和网络上单击以查看您的ajax调用详细信息,有时由于不推荐使用的方法而发生错误,并且您需要更改php.ini中的某些php设置。像

always_populate_raw_post_data = -1

同样如果您使用的是routes.php,请确保使用正确的路径

另一答案

您能否检查此答案How to fix "Headers already sent" error in PHP

可能在设置标头之前抛出了一些输出/或错误。

另一答案

当您进行AJAX调用时,您正在调用Code-igniter入口点,该入口将加载所有必需的库,包括启动会话。

[不知道函数log_message()在做什么,但是我相信它会尝试打印到STDOUT,然后您的代码或代码点火器尝试发送一些标头。

您能否发布有关log_message()函数的大多数详细信息?

以上是关于无法发送会话缓存限制器-已发送的标头-CodeIgniter(Session.php)的主要内容,如果未能解决你的问题,请参考以下文章

无法发送会话缓存限制器-已发送的标头-CodeIgniter(Session.php)

警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 标头已发送 [重复]

会话开始错误 [重复]

无法发送会话 cookie - 标头已发送 PHPUnit / Laravel

警告:session_start() [function.session-start]:无法发送会话 cookie - 标头已发送 [重复]

错误:在我初始化会话后发送标头后无法设置标头