Я получаю многочисленные ошибки точно так же, как этот:
Zend_Session_Exception: Session must be started before any output has been sent to the browser; output started in /usr/local/zend/share/pear/PHPUnit/Util/Printer.php/173
При запуске моего набора тестовых приложений. Это с PHPUnit 3.5.10 и PHP 5.3.5.
Нет таинственного, неожиданного выходного потока, который вызывает это. Я решил, что "вывод, отправляемый в браузер", является фактическим результатом выполнения тестов PHPUnit. Если я открою PHPUnit/Util/Printer.php и завершаю строку print $buffer
с помощью if (strpos($buffer, 'PHPUnit 3.5.10 by Sebastian Bergmann') === false)
(эффективно останавливая первую строку вывода из PHPUnit), мой первый тест будет успешным (пока тестовый пример не выведет точку, указывающую, что тест прошел успешно, затем следующий тест завершился неудачно, потому что точка была выведена).
Еще один разработчик моей команды может успешно запустить полный тестовый пакет, поэтому я знаю, что это не проблема с кодом приложения. Это должно быть некоторые настройки конфигурации или проблемы с моей локальной средой.
Я уже проверил php.ini, чтобы убедиться, что output_buffering
включен, и implicit_flush
выключен, и они есть.
Я также попытался добавить Zend_Session::$_unitTestEnabled = true;
в свой тестовый бутстрап, но это не помогло (и не обязательно должно быть так или иначе, потому что оно работает на другом компьютере разработчика и на нашем сервере CI без него).
Любые предложения, кроме игнорирования ошибок? Я никогда не видел ничего подобного и действительно в растерянности.
Спасибо!
UPDATE:
Чтобы попытаться изолировать проблему, я выбрал ZF и мое приложение из уравнения, выполнив следующий тест script:
<?php
class SessionTest extends PHPUnit_Framework_TestCase
{
public function testSession()
{
session_start();
$this->assertTrue(true);
}
}
Сбой теста:
1) SessionTest::testSession
session_start(): Cannot send session cookie - headers already sent by (output started at /home/mmsa/test.php:1)
Тем не менее, тот же самый тест работает на другом компьютере. Такая же версия PHP и PHPUnit.