PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0

Отличная ошибка, на которую обычно просто «забивают», т. к. не понятно, где и что искать.

А ошибка вызвана тем, что в кастомном обработчике исключений происходит исключение, после чего php прерывает процесс с таким замечательным и информативным сообщением об ошибке.

В моём случае это было своё расширение для класса DateTime

	public function __construct( $Time = 'now', DateTimeZone $Timezone = null )
	{

		// PHP 5.3.3 имеет этот баг:
		// @link https://bugs.php.net/bug.php?id=52063
		// поэтому пишем странное:
		if ( ! empty( $Timezone ) ) {
			parent::__construct( $Time, $Timezone );
		}
		else {
			parent::__construct( $Time );
		}

	// ещё раз вызываем явно setTimezone, чтобы обойти багу с timestamp - @link http://www.php.net/manual/en/datetime.construct.php#97724
		if ( empty( $Timezone ) ) {
			$this->setTimezone( new DateTimeZone( 'Europe/Moscow' ) );
		}
	}

Если не написать тот странный код, то происходило прерывание php-процесса с ошибкой
PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0. У нас такое происходило только на одном из серверов на продакшн, который админы никак не могут обновить до нормальной версии php.

Вот подробное описание, почему так происходит: http://www.php.net/manual/en/function.set-exception-handler.php#68712

One Response so far.

  1. А как убрать ошибку :

    PHP Fatal error: [Zend Optimizer] Extension «Zend Optimizer» cannot be loaded twice in Unknown on line 0

    Linux CentOS 5

LEAVE A COMMENT