Je met ce post ici pour l'aspect sécurité.
Nous avons une configuration de production avec un serveur Dell bipro, Windows Server 2003, IIS 6, PHP 4.4.2 installé en mode isapi, Zend Optimizer 2.5.10
Pour le site, nous utilisons intensivement Smarty et Pear:DB (connection à une base de données Oracle 10 située sur un autre serveur) ; Pear est installé dans le répertoire de PHP pour une utilisation commune à plusieurs sites.
Nous avons aussi des outils du monde libre et qui utilisent MySQL : phpmyadmin bien sûr, mais aussi les forums Agora et phpBB, le suivi de bug Mantis, le wiki MediaWiki, ...
Au fil du temps (quelques jours, quelques dizaines de jours, cela dépend de l'utilisation du site), commencent à apparaître des messages du type
Code : Tout sélectionner
Fatal error: Call to undefined function: xxx in c:\xxx\DB.php on line 59
Puis cela va très vite, bientôt une page sur deux produit des des Error 500 : Internal Error, puis des messages
Code : Tout sélectionner
PHP access violation on (adresse mémoire)
A ce moment-là, on reboote complètement le serveur et tout est reparti pour une semaine de tranquillité. Ca c'est le scénario le plus courant, des fois on a des access violations avant les erreurs 500.
Question 1 : est-ce que quelqu'un a déjà eu ce problème et s'il l'a résolu, comment ?
Question 2 : Comment arriver à localiser ce qui provoque ces access violations ou du moins le premier. C'est peut-être une partie d'un programme ou d'une bibliothèque (avec un truc récursif ou un truc codé à l'arrache, je ne sais pas), mais quand on me prévient, je ne sais pas quel utilisateur l'a eu en premier (ce n'est pas forcément celui qui me prévient).
Je ne suis pas sûr que les solutions d'interception d'erreur à base de PHP servent à quelque chose quand PHP est planté.
Je suis preneur de toutes les idées possibles à part passer sous Linux (impossible) et passer sous Apache (peut-être en tout dernier ressort).
Quant à installer PHP en mode CGI, j'y suis arrivé sur le serveur de dev (IIS 5 sous XP), mais j'ai jeté l'éponge sur IIS 6 ; cela dit, avec une doc décrivant ce qu'il faut faire au niveau autorisations, pourquoi pas ?
Merci