Хорошо, поэтому я написал интеграцию с решением стороннего управления заказами внутри платформы Magento Ecommerce, которая построена поверх Zend Framework. Все отлично работает на моем локальном компьютере, а также на моем локальном dev-сервере. Оба сервера используют PHP 5.2.x. При развертывании на промежуточном сервере, который использует PHP 5.3.3, я теперь получаю эту ошибку в части моего кода
PHP Неустранимая ошибка: Исключение выбрано без рамки стека Неизвестно в строке 0
Я пробовал комментировать фрагменты кода, чтобы увидеть, с чем я могу сузить его, но не настолько удачлив. Я запускаю код в наблюдателе Magento, который вызывает созданную мной модель, которая также устанавливает некоторые переменные в сеансе. У меня есть много методов, вызывающих другие классы, такие как мой наблюдатель вызывает мою модель заказа, которая также вызывает мою модель клиента, и все они называют несколько разных методов внутри своих классов. Его было трудно отлаживать на сервере, записывая и комментируя строки, я не добился хороших результатов.
Из исследования, которое я сделал, это кажется мне более похожим на то, что я пытаюсь установить на сеанс, умирает в деструкторе. Я попытался использовать session_write_close () в конце моего метода наблюдателя, прежде чем он вернется, чтобы он мог показать мне ошибку ранее, но фактически это заставило мою программу не умереть, и она работала, как предполагалось. Я не уверен, что мне удобно оставить это там, потому что я уверен, что это может испортить остальную часть потока, но я не настолько осведомлен об этом.
Я просто пытаюсь понять, что лучший способ отладить это. Я не понимаю, почему это работает, когда вы добавляете это и что может умереть в деструкторе, очевидно, я не бросаю исключение в деструктор, но что-то я делаю. Но он отлично работал, пока я не поставил код на промежуточном сервере. К слову, также используется nginx вместо apache.
Прежде всего, эти вещи трудно отлаживать. Я думаю, что проблема заключается в сериализации. Прежде чем объект будет сохранен в сеансе, он будет сериализован, чтобы он мог быть сохранен.
В другом проекте у меня была эта проблема, и у меня был тот же самый код ошибки, что и у вас.
Magento имеет пару классов, которые не могут быть сериализованы. Один из этих классов – Mage_Core_Config_Element. Возможно, вы используете этот класс?
Я не уверен, но, возможно, если вы создадите пользовательскую функцию serialize (), вы можете найти проблему.
У меня была эта проблема, потому что основной идентификатор в моей таблице DB был установлен в INT (11) (IDIOT!)
Дублирующие сеансы БД, созданные при входе в Zend_Auth
Он должен быть установлен в CHAR (32)!