Cherche dépanneur en PHP pour mediawiki [RESOLU] - PHP - Programmation
Marsh Posté le 06-04-2016 à 10:30:06
Les erreurs ne sont pas affichées. Il faut donc, soit dans le fichier de conf (LocalSettings.php) soit dans le index.php mettre vers le début du fichier, le code suivant :
error_reporting(E_ALL);
Ca permettra de voir déjà qu'est-ce qui ne va pas. Ensuite, ben y'aura qu'à corriger les erreurs une à une.
Pour avoir eu à traiter un pb similaire avec une de mes applis web anciennes et être passé de PHP 5.1 à 5.6, mes principales erreurs venaient de la lib Pear:DB et du fait qu'il manquait le mot-clé "static" devant certaines méthodes d'objets justement appelées en statique.
ex : MonObj::MaMethodeStatique()
Dans l'objet, la méthode était déclarée :
Class MonObj {
public function MaMethodeStatique() {
....
}
}
Après "public", il fallait ajouter "static" Je pense que ça doit être le même pb.
Marsh Posté le 06-04-2016 à 15:16:03
rufo a écrit : Les erreurs ne sont pas affichées. Il faut donc, soit dans le fichier de conf (LocalSettings.php) soit dans le index.php mettre vers le début du fichier, le code suivant : |
Je fais la manip' pour faire apparaître les erreurs et je reviens poster ici.
Merci pour cette réponse rapide
Marsh Posté le 06-04-2016 à 15:26:43
rufo a écrit : Les erreurs ne sont pas affichées. Il faut donc, soit dans le fichier de conf (LocalSettings.php) soit dans le index.php mettre vers le début du fichier, le code suivant : Ca permettra de voir déjà qu'est-ce qui ne va pas. Ensuite, ben y'aura qu'à corriger les erreurs une à une. Pour avoir eu à traiter un pb similaire avec une de mes applis web anciennes et être passé de PHP 5.1 à 5.6, mes principales erreurs venaient de la lib Pear:DB et du fait qu'il manquait le mot-clé "static" devant certaines méthodes d'objets justement appelées en statique. Dans l'objet, la méthode était déclarée : Après "public", il fallait ajouter "static" Je pense que ça doit être le même pb. |
Je viens d'ajouter la ligne dans index.php -> il ne se passe rien
Puis dans LocalSettings.php -> rien non plus
Je pensais que les erreurs apparaissaient dans la page mais il y a peut être un fichier qui se génère ?
Marsh Posté le 07-04-2016 à 08:54:49
Regarder aussi si devant ne nom de certaines fonctions, il n'y aurait pas un "@". Ca masque les erreurs.
Regarder aussi si qq part dans le code, il n'y aurait pas une directive qui annulerait l'effet de error_reporting(E_ALL).
Je regarderais ça dans mon Mediawiki (mais c'est un 1.11). si je trouve qq chose qui empêcherait l'affichage des erreurs...
Marsh Posté le 07-04-2016 à 10:23:35
Si je vous dépose le code du script, ça peut vous aider ?
J'anonymiserai les données sensibles.
Marsh Posté le 07-04-2016 à 11:03:05
Euh, tout le code source de Mediawiki, ça va peut-être faire un peu gros, sans compter qu'il faut la BD avec un minimum de contenu.
Marsh Posté le 07-04-2016 à 12:01:03
Je pensais qu'en mettant ceci dans le LocalSetting.php ou index.php, ça le ferait :
Code : |
J'ai ajouté dans le index.php un bout de code levant un warning. Rien, aucune erreur ne s'affiche et pas de fichier de log créé. Bizarre
Edit : ah si, ça marche, il fallait mettre les droits 777 sur le répertoire /logs/.
Marsh Posté le 07-04-2016 à 12:12:53
Bingo !
En ajoutant ces 4 lignes dans index.php, ça génère les erreurs qui sont apparues sur la page web
Je les ai recopiées et j'ai ajouté le code concerné en dessous
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 700
Warning: Invalid argument supplied for foreach() in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 701
Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 705
Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 700
Warning: Invalid argument supplied for foreach() in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 701
Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 705
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /home/www/f8d56dcb8a058b382b573d2a8274e93a/web/wiki/includes/MagicWord.php on line 722
Et voici donc les lignes incriminées
689 /**
* Returns an associative array, ID => param value, for all items that match
* Removes the matched items from the input string (passed by reference)
*/
public function matchAndRemove( &$text ) {
$found = array();
$regexes = $this->getRegex();
foreach ( $regexes as $regex ) {
if ( $regex === '' ) {
continue;
}
700 preg_match_all( $regex, $text, $matches, PREG_SET_ORDER );
701 foreach ( $matches as $m ) {
list( $name, $param ) = $this->parseMatch( $m );
$found[$name] = $param;
}
705 $text = preg_replace( $regex, '', $text );
}
return $found;
}
/**
* Return the ID of the magic word at the start of $text, and remove
* the prefix from $text.
* Return false if no match found and $text is not modified.
* Does not match parameters.
*/
public function matchStartAndRemove( &$text ) {
$regexes = $this->getRegexStart();
foreach ( $regexes as $regex ) {
if ( $regex === '' ) {
continue;
}
722 if ( preg_match( $regex, $text, $m ) ) {
list( $id, $param ) = $this->parseMatch( $m );
if ( strlen( $m[0] ) >= strlen( $text ) ) {
$text = '';
} else {
$text = substr( $text, strlen( $m[0] ) );
}
return $id;
}
}
return false;
}
}
Marsh Posté le 07-04-2016 à 13:45:46
http://php.net/manual/fr/function.preg-match.php
Je pense que tu devrais vérifier le contenu de $regex, ou plus rapidement, de $regexes en faisant soit print_r($regexes), soit var_dump($regexes);
Doit y avoir dedans du contenu qui lui plait pas.
Marsh Posté le 07-04-2016 à 13:48:12
http://stackoverflow.com/questions [...] -are-blank
-> je crois que tu es dans le caca Apparemment (j'ai lu en diagonale), il faudrait passer en Mediawiki 1.22.6
Lire aussi : https://www.mediawiki.org/wiki/Topic:Rlm4cd0xrakgfg94
Edit : dans ce dernier lien, il parle d'un patch mais pour du 1.22.
Marsh Posté le 07-04-2016 à 15:14:59
J'ai bien l'impression qu'il va me falloir upgrader mediawiki. La version 1.16 date pas mal, il semble qu'au niveau failles de sécurité, elle ne soit pas au top. La solution semble bien d'aller vers une version récente, la 1.26
Il ne me reste qu'à te remercier pour cette patience et la réponse à mes messages successifs. Une autre aventure va commencer pour moi: ne rien foirer avec le changement de version, la doc est un poil technique en anglais
Marsh Posté le 07-04-2016 à 21:05:54
Bon courage. AU moins tu as une solution à ton pb. En info, c'est pas toujours le cas
Marsh Posté le 08-04-2016 à 07:05:38
Merci, Rufo.
Sans ton aide, je n'aurais pas eu assez confiance et assez d'encouragement.
J'ai fait une install de la version 1.26 dans un autre répertoire, je l'ai paramétrée à l'identique (j'ai un peu pataugé avec certaines options de la nouvelle version, il faut absolument que je trouve un forum mediawiki francophone pour quelques points) et après une reconstruction de la base de données et quelques ultimes correctifs à ma portée, la nouvelle version fonctionne dans le nouvel environnement php.
Victoire ! Et merci encore.
Marsh Posté le 08-04-2016 à 10:08:05
Bon ben tant mieux que ton pb soit résolu
Edit : mets [RESOLU] dans le titre de ton premier post pour mettre à jour le titre du topic et ainsi, informer les autres que tu n'as plus besoin d'aide.
Marsh Posté le 05-04-2016 à 19:43:28
Bonjour
Le wiki de notre asso est hébergé par Infomaniak et réalisé à partir de mediawiki 1.16.0
Notre hébergement est passé de la version 5.2 de PHP à la version 5.5 ce qui a causé quelques problèmes. Les contenus sont toujours là mais désormais inaccessibles.
Page d'accueil http://www.gennievre.net/wiki/
Nous cherchons donc quelqu'un qui puisse remettre en service ce wiki qui contient un nombre colossal de données.
Merci pour vos propositions
Message édité par gennievre le 08-04-2016 à 17:29:55