PHPUnit 无法发送 session cookie - header 已发送

标签 php eclipse session phpunit

在 Eclipse 中通过以下代码片段使用 PHPUnit 时,出现错误:

Cannot send session cookie - headers already sent by (output started at C:\wamp\bin\php\php5.3.13\pear\PHPUnit\Util\Printer.php:172)

Session_start() 在“LoginTest”中执行。如何阻止 PHPUnit 干扰 session cookie 的生成?

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'C:\wamp\bin\php\php5.3.13\pear\PHPUnit\autoload.php';

class MyTestCase extends PHPUnit_Framework_TestCase {
     static function main(){
        $suite = new PHPUnit_Framework_TestSuite("LoginTest");
        //$suite = new PHPUnit_Framework_TestSuite("FriendListTest");
        //$suite = new PHPUnit_Framework_TestSuite("UserTest");
        PHPUnit_TextUI_TestRunner::run($suite);
     }
}
MyTestCase::main();
?>

Very similar problem with solution that won't let me debug in Eclipse.

最佳答案

在问题单元测试功能的顶部(或者如果所有功能都受到影响,那么在 setUp(),甚至 public static function setUpBeforeClass())添加这个代码:

@session_start();

或者用手写:

$prev = error_reporting(0);
session_start();
error_reporting($prev);

这看起来像是你永远不应该做的事情,但它在这里是完美的,因为抑制错误消息正是我们想要做的!


正如我在对 hakre 的回答的评论中指出的那样,摆弄 ini 设置从来没有奏效,甚至在调用 session_start() 之前都没有尝试过这种组合:

 ini_set("session.use_cookies",0);
 ini_set("session.use_only_cookies",0);
 ini_set("session.use_trans_sid",1);

关于PHPUnit 无法发送 session cookie - header 已发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16657101/

相关文章:

php - 为 mysqli 选择查询以从表中选择所有付费成员(member)

php - MySql 和 ADODB5 - 最大连接数

Eclipse 工作区 UI 布局重置

php - CakePHP 1.3 - 蛋糕库中的无限循环、Apache 崩溃、 session 助手和 __start()?

apache - 如何将本地主机应用程序服务器从 Apache httpd 更改为 ColdFusion 10 中内置的 Tomcat?

php - 使用正则表达式返回 mysql 字符串

php - 仅当有空位时才选择事件

c - 无论如何,我不能在我的 Eclipse 中使用 fflush 来获得正确的控制台?

java - 使用 Javabeans 创建登录页面(未设置属性)

php - 服务器中的codeigniter oc_ prefex数据库问题