Suite au passage à PHP 5.3.x sur l'un de mes serveurs, l'interface de Centreon ne fonctionnait plus. Dans mon cas c'était suite à l'upgrade de Ubuntu 9.04 vers Ubuntu 10.10.
Symptôme
La page Centreon renvoie une erreur sur du code PHP déprécié, ce qui chamboule l'interprétation du code PHP. En effet l'erreur s'insère directement dans la page et empêche session_start() de fonctionner, puisque aucun caractère ne doit être envoyé avant l'utilisation de session_start().
Voici le contenu du message d'erreur renvoyé dans le code source de la page d'authentification (assorti du message 'Invalid User' en rouge) :
Deprecated: Assigning the return value of new by reference is deprecated in /usr/local/centreon/www/index.php on line 160 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/local/centreon/www/index.php:160) in /usr/local/centreon/www/class/Session.class.php on line 49 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/local/centreon/www/index.php:160) in /usr/local/centreon/www/class/Session.class.php on line 49
De ce fait il est impossible de se connecter à la console Centreon.
Voici deux solutions pour corriger ce problème.
La solution propre
En PHP5, le passage par référence est systématique sur new, donc l'ampersand "&" n'a plus lieu d'être. Dans le fichier /usr/local/centreon/www/index.php (le chemin peut varier suivant les installations), trouver la ligne 160 :
$user =& new User($centreonAuth->userInfos, $generalOptions["nagios_version"]);
et la remplacer par :
$user = new User($centreonAuth->userInfos, $generalOptions["nagios_version"]);
C'est tout ! Maintenant tout devrait fonctionner.
La solution "crade"
La deuxième solution consiste à inhiber les messages renvoyé par PHP concernant la dépréciation. L'effet est immédiat et Centreon fonctionnera de nouveau.
Localiser votre fichier php.ini (généralement dans /etc/php5/apache2/php.ini) :
[shell]locate php.ini[/shell]
Editez le fichier :
[shell]nano /etc/php5/apache2/php.ini[/shell]
Puis localiser la chaine : error_reporting = E_ALL & ~E_NOTICE
Remplacer cette chaîne par :
[shell]error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED[/shell]
Relancer le service Apache :
[shell]/etc/init.d/apache2 restart[/shell]
Maintenant tout fonctionne !
Attention : cette modification n'est pas idéale car elle peut masquer des erreurs importantes, surtout si vous développez sur ce même serveur. Cette solution est temporaire, en attendant que Centreon fasse évoluer son code source dans une future version (v2.1.9 actuellement).
Conclusion
Si vous avez de nombreux serveurs qui utilisent Centreon, attendez que Centreon corrige ce "bug" avant de passer à PHP 5.3.x via les mises à jours systèmes. En revanche, si vous êtes un jedi du monitoring cette manipulation ne vous posera guerre de souci.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
Un commentaire