Ceci est une ancienne révision du document !
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 WIKI_A j’obtiens
PHP Fatal error: require_once(): Failed opening required '/var/www/WIKI_B/vendor/composer/autoload_real.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/WIKI_A/vendor/autoload.php on line 5
Si je vais sur le WIKI_B j’obtiens
PHP Fatal error: require_once(): Failed opening required '/var/www/WIKI_A/vendor/composer/autoload_real.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/WIKI_B/vendor/autoload.php on line 5, referer: http://wiki.edmc73.com/
On constate que le code du wiki fait un require_once sur un fichier de l’autre wiki..
Analysons le code du fichier autoload_real.php
require_once __DIR__ . '/composer' . '/autoload_real.php';
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.