Outils pour utilisateurs

Outils du site


Panneau latéral

linux:php (lu 23053 fois)

Ceci est une ancienne révision du document !


Table des matières

PHP

Commande

Problème rencontré

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.

linux/php.1486293211.txt.gz · Dernière modification: 05-02-2017 12:13 de edmc73