Вывод PHPUnit, вызывающий исключения Zend_Session

Я получаю множество ошибок точно такого же типа:

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-сервере без нее).

Какие-либо предложения помимо игнорирования ошибок? Я никогда не видел ничего подобного и действительно растерялся.

Спасибо!

ОБНОВЛЕНИЕ:

Чтобы попытаться еще больше изолировать проблему, я исключил 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.

27
задан Michael Moussa 1 April 2011 в 02:44
поделиться