ZF-12111: FlashMessenger doesn't check for exception throw by Zend_Session_Namespace


In my bootstrap, I initialize FlashMessenger for use in the application. When moving the app to a new server which did not yet have a valid session.save_path set, the application fails to run and results in a blank screen even though display_errors is on and error_reporting is set to E_ALL. An exception is thrown but is masked by an error handler, and FlashMessenger doesn't wrap its call to Zend_Session_Namespace in a try...catch block which results in a fatal uncaught exception error; but the fatal error is not displayed.

When constructing a FlashMessenger object, it creates a new Zend_Session_Namespace which can throw an exception if the session fails to start, however the call to new Zend_Session_Namespace in FlashMessenger::__construct is not in a try catch block.

Zend_Session::start registers its own error handler to see if session_start fails so the error is masked. This error handler seemed to stay active and masked further PHP fatal errors from being output.

TO REPRODUCE: Create a new Zend_Application. Set the session.save_path in php.ini to an invalid directory Set display_errors to On and error_reporting to E_ALL in php.ini Add a method _initFlashMessenger to your Bootstrap.php file with the following code: $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); Run your application in the browser

EXPECTED RESULT: An exception or application error saying the session failed to start

ACTUAL RESULT: A page with no output and no messages added to any error_log


No comments to display