Un problème assez inquiétant que j’ai découvert. J’ai 2 dokuwiki installé chacun dans leur répertoire respectif et pour une raison douteuse, l’accès aux wiki génère des erreurs 500.
et voici les logs d’erreur
Si je vais sur le WIKIA j’obtiens <code> PHP Fatal error: requireonce(): Failed opening required '/var/www/WIKIB/vendor/composer/autoloadreal.php’ (includepath='.:/usr/share/php:/usr/share/pear’) in /var/www/WIKIA/vendor/autoload.php on line 5 </code>
Si je vais sur le WIKIB j’obtiens <code> PHP Fatal error: requireonce(): Failed opening required '/var/www/WIKIA/vendor/composer/autoloadreal.php’ (includepath='.:/usr/share/php:/usr/share/pear’) in /var/www/WIKIB/vendor/autoload.php on line 5, referer: http://wiki.edmc73.com/ </code>
On constate que le code du wiki fait un require_once sur un fichier de l’autre wiki..
Analysons le code du fichier autoloadreal.php <code> requireonce DIR . '/composer’ . '/autoload_real.php’; </code>
Riens de sorcier, on dirait que DIR renvoit n’importe quoi, le test suivant est pourtant correct
echo __DIR__ . '/composer' . '/autoload_real.php';
Le bon chemin est retourné, donc pourquoi le chemin est mauvais lorsqu’il est appelé dans un require_once ??
Après des heures de galères, j’ai trouvé la réponse ici : https://forum.nette.org/en/27363-one-nette-application-tries-to-touch-files-in-another
Il s’agirait du module de cache opcache de php qui provoque ce bug.
Solution :
Installer xcache
apt install php5-xcache
et désactiver le module php5 opcache
php5dismod opcache
Maintenant tout fonctionne correctement.