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().