Я получаю множество ошибок, подобных этой:
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 и мое приложение из уравнения, выполнив следующий тестовый скрипт:
<?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.