我在使用codeigniter
开发的live上遇到php会话错误A PHP Error was encountered
Severity: Warning
Message: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/userts4m/public_html/development/relatioweb/admin/index.php:1)
Filename: Session/Session.php
Line Number: 140
Backtrace:
File: /home/userts4m/public_html/development/relatioweb/application/admin/controllers/User.php
Line: 9
Function: __construct
File: /home/userts4m/public_html/development/relatioweb/admin/index.php
Line: 293
Function: require_once
在localhost工作正常。但是当我在服务器上升时,我们正面临这个问题。
我该怎么做......
答案 0 :(得分:8)
这两种解决方案都适合我试试。也许他们会为你工作。
有时由于框架配置错误而发生此错误,
转到文件夹applications/config
并打开config.php
在此文件的开头写这个
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
ob_start();
/* Remaining Part Of your file
.........................................
*/
另一种解决方案是在类的构造函数中编写ob_start()
像这样:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Your_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
ob_start();
}
}
答案 1 :(得分:4)
问题在这里得到了很好的解释How to fix "Headers already sent" error in PHP
为了解决这个问题,我需要实施 输出缓冲的概念(输出缓冲是一种机制,其中不是立即向浏览器发送响应,而是将其缓冲到某处,以便我们可以在整个内容准备就绪时立即发送它)。 因此错误表明index.php中出现问题 我插入了什么
ob_start();
在index.php的开头
答案 2 :(得分:2)
这通常意味着你已经有了session_start()
的某个地方而第二个会抛出这个错误。删除多余的。
答案 3 :(得分:2)
根据@kunal
和@dale
建议,/home/userts4m/public_html/development/relatioweb/admin/index.php
答案 4 :(得分:1)
尝试使用@session_start();它将绕过错误并开始会话。 请注意@session_start()是代码的第一行。不要在它之前执行或回显任何东西。
答案 5 :(得分:1)
在启动PHP标记之前,此文件中可能有空格。
答案 6 :(得分:0)
检查控制器文件,如果在php标记之前将其删除,则有空格。
答案 7 :(得分:0)
检查文件中是否有多余的空格,或者在我的情况下,在php标记之前(在Iam中使用codeigniter)在application / config / autoload.php中输入一个额外的内容
答案 8 :(得分:0)
ob_start ([ callable $output_callback = NULL [, int $chunk_size = 0 [, int $flags =
PHP_OUTPUT_HANDLER_STDFLAGS ]]] ) : bool
此功能将打开输出缓冲。当输出缓冲是 活动的,没有从脚本(头文件除外)发送任何输出,而是 输出存储在内部缓冲区中。
此内部缓冲区的内容可以复制到字符串中 使用ob_get_contents()的变量。要输出存储在 内部缓冲区,请使用ob_end_flush()。或者,ob_end_clean() 将以静默方式丢弃缓冲区内容。
答案 9 :(得分:0)
我不得不转到php.ini,并从always_populate_raw_post_data = -1
行中删除注释。