我安装了一个新项目 yii2 - 高级,我还没有真正改变项目中的任何内容,即 几乎所有的设置都是默认的。运行 codeception 时,它提供以下内容:
session_set_cookie_params(): Cannot change session cookie parameters when headers already sent
/app/vendor/yiisoft/yii2/web/Session.php:388
/app/vendor/yiisoft/yii2/web/Session.php:135
/app/vendor/yiisoft/yii2/web/Session.php:635
/app/vendor/yiisoft/yii2/web/User.php:653
/app/vendor/yiisoft/yii2/web/User.php:252
/app/common/models/LoginForm.php:59
/app/common/tests/unit/models/LoginFormTest.php:63
/app/vendor/symfony/console/Application.php:262
/app/vendor/symfony/console/Application.php:145
/home/vagrant/.phpstorm_helpers/codeception.php:40
我无法弄清楚这意味着什么以及错误来自哪里?也许这与我的测试是从虚拟机运行的事实有某种联系?
这个问题也困扰了我很久。当我尝试使用 PHPStorm 内置工具运行任何测试(特别是针对 Yii2)时,我收到以下消息:
session_set_cookie_params():当标头已发送时无法更改会话 cookie 参数
很长一段时间,手都没有伸到,但昨天,在午夜与万能手鼓共舞之后,我发现了以下内容:
PHPStorm (jetBrains for Google) 使用 Codeception Framework 插件放置文件:
C:/Users/dev/AppData/Local/Temp/ide-codeception_before_24.php:405
printEvent 方法通过 Printer::write() 将日志打印到控制台:
供应商/phpunit/phpunit/src/Util/Printer.php:99
我没有找到完美修复它的方法,所以“这是我们对张伯伦的回答!”:在 tests/_bootstrap.php 中我们编写ob_start():
缓冲区在测试结束时自动刷新到控制台。我们得到以下信息:
一切似乎都很清楚,
не может изменить куки, потому что заголовок уже сформирован.这意味着您首先要做例如echo 123;然后尝试更改 cookie,这是不可能的,只有在输出流干净时才会更改 cookie。那些。首先我们触摸 cookie,然后我们触摸输出。