Zend_Session : Session already started

Lorsque session_start() est appelée plus d'une fois dans un script PHP, un message d'avertissement est affiché :
Notice: A session had already been started - ignoring session_start() in ****.php on line ***

Pour y remédier, il faut bien évidemment revoir son code PHP de façon à ce que l'instruction ne soit appelée qu'une fois dans un script.

Mais, dans certains cas, il est nécessaire de mettre en place des solutions de contournement.

L'arobase (@)

@session_start();
La suppression d’erreurs avec @ est très répandue mais elle est déconseillée notamment pour des raisons de performance.

La directive 'display_errors'

ini_set('display_errors', 0);
Cette directive indique que les erreurs ne doivent pas être affichées à l'écran. Elle doit être utilisée dans chaque script "incriminé", avant l'appel de session_start().

La directive 'error_reporting'

error_reporting(0);
La directive error_reporting(x) est un alias de ini_set('display_errors', x);

La configuration de Zend_Session

resource.session.throw_startup_exceptions=0
Cette instruction ne doit être ajoutée que dans le fichier de configuration "application.ini" mais sera applicable à tous les appels de session_start().

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.