Резюме
Удивительно, что я ничего не мог найти об этом в Google или SO. Когда я бросаю исключение в PHP, он появляется в моей консоли дважды, заполняя сообщение об ошибке и трассировку стека. В первый раз, когда он печатался, он говорит "PHP Fatal error:...", а во второй раз он просто говорит "Fatal error:...". Я не тестировал это версия плагина Apache.
Пример
С некоторыми пространствами имен и путями, сокращенными "..." для обеспечения безопасности:
$ php code/com/.../tabular_data.php PHP Fatal error: Uncaught exception 'Exception' with message 'File type not supported' in /home/codemonkey/.../tabular_data.php:56 Stack trace: #0 /home/codemonkey/.../tabular_data.php(88): com\...\Tabular_Data->loadFromFile('/home/codemonke...', false) #1 /home/codemonkey/.../tabular_data.php(95): com\...\Tabular_Data::fromFile('/home/codemonke...') #2 {main} thrown in /home/codemonkey/.../tabular_data.php on line 56 Fatal error: Uncaught exception 'Exception' with message 'File type not supported' in /home/codemonkey/.../tabular_data.php:56 Stack trace: #0 /home/codemonkey/.../tabular_data.php(88): com\...\Tabular_Data->loadFromFile('/home/codemonke...', false) #1 /home/codemonkey/.../tabular_data.php(95): com\...\Tabular_Data::fromFile('/home/codemonke...') #2 {main} thrown in /home/codemonkey/.../tabular_data.php on line 56
Вопрос
Я предполагаю, что это имеет какое-то отношение к stderr и stdout, которые печатают ошибку. В любом случае, как я могу просто попросить PHP только распечатать его один раз, желательно, чтобы stderr?
Выход версии
PHP 5.3.9 (cli) (построено: 11 января 2012 г. 17:09:48)
Copyright (c) 1997-2012 PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
Код
http://pastebin.com/iBUGJ2eY
Это точный код, который отображает двойные исключения для меня, с пространством имен и путями, отредактированными для foos. Обратите внимание, что я всегда получаю двойные исключения в командной строке этой установки. Я почти уверен, что проблема заключается в конфигурации PHP.