Erreur opcache/xcache

Lors d'une mise à jour vers PHP 5.6, une erreur étrange est apparue sur mes hôtes virtuelles contenant les mêmes fichiers (code source). Au départ, je croyais qu'il s'agissait d'un problème de chargement avec les liens symboliques. Après avoir enlever la majorité des liens symboliques le problème persistait toujours. Une modification d'un seul caractère dans un fichier pouvait corriger le problème temporairement, mais il apparaissait plus loin.

La configuration était la suivante:

  • apache httpd 2.X
  • php 5.6.X
  • xcache (depuis 5.3 migré jusqu'à 5.6)
  • opcache (installé/activé par debian en 5.5 je crois)
  • Hôte virtuel n° 1 dans /var/www/vhost/domain1.com/
  • Hôte virtuel n° 2 dans /var/www/vhost/domain2.com/
  • Même code dans index.php sur les deux hôtes virtuels.

J'ai ajouté le code suivant dans les deux fichiers index.php

var_dump(__DIR__);
var_dump(__DIR__.'/config/config.php');

Le résultat sur domain1.com

string(...) "/var/www/vhost/domain1.com"
string(...) "/var/www/vhost/domain1.com/config/config.php"

Le résultat sur domain2.com

string(...) "/var/www/vhost/domain2.com"
string(...) "/var/www/vhost/domain1.com/config/config.php"

Noter que pour le domaine 2, la chaîne __DIR__.'/config/config.php' n'est pas la bonne (utilise le résultat de domain1.com).

Solution: désactiver opcache ou désactiver xcache pour le code

Pour désactiver opcache (dans le fichier /etc/php5/mods-available/opcache.ini)
;zend_extension=opcache.so

Pour désactiver XCache pour les fichiers, mais pas les variables (dans le fichier /etc/php5/mods-available/xcache.ini)
xcache.size = 0

N'oubliez pas de redémarrer le serveur apache2

Problème réglé le 2018-08-15