Outils pour utilisateurs

Outils du site


Panneau latéral

linux:php (lu 22720 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 ou presque… j’ai encore eu le problème avec xcache, en le disactivant, plus de problème mais plus de module de cache.

Pour en savoir plus sur opcache ⇒ https://www.ekino.com/php-comment-configurer-utiliser-et-surveiller-opcache/

linux/php.1497722357.txt.gz · Dernière modification: 17-06-2017 19:59 de edmc73