[Doc] Erreurs fréquentes lors de l'installation de MODs

Découvrez ici une liste de documents concernant phpBB: son installation, sa mise à jour et enfin son utilisation.
En bref, apprenez ici à vous servir de phpBB2!

Modérateur: Equipe

Règles du forum
A lire impérativement sur notre page : Règlement

[Doc] Erreurs fréquentes lors de l'installation de MODs

Messagepar Vlad Tepesch » 24 Aoû 2006 à 11:39

» Erreurs fréquentes à l'installation des MODs

Depuis le peu de temps que je suis dans l'équipe des MODs, j'ai remarqué que de nombreuses erreurs revenaient en boucle. Ce document va tenter de vous montrer les différents messages d'erreur, afin que vous les compreniez et soyez capable de les réparer vous-même.

    Image Info: Cette documentation se base sur l'hypothèse d'une mauvaise installation d'un MOD. Ce n'est pas un guide des erreurs PHP.


Info
» Si malgré ce document, vous n'arrivez vraiment pas à trouver l'erreur, il vous reste 2 méthodes :
-Repartir de votre version stable précédente du fichier (copie de sauvegarde avant mise en place du MOD, voir version d'origine) et ré-installer le MOD.
-Mettre une demande de support dans le forum approprié. Pour résourdre cette demande, il nous faudra le message d'erreur, ainsi que le fichier qui pose problème.

Note : Pour mettre un fichier en téléchargement :

Elglobo a écrit:Pour mettre un fichier en téléchargement, il faut effectuer cela :
- Télécharger le fichier en question de ton FTP sur ton poste de travail;
- Renommer celui-ci en .txt;
- Envoyer ce fichier à la racine de ton FTP;
- Nous mettre un lien direct vers le fichier txt.



» Sommaire

    Erreurs SQL

    Erreurs critiques

    Warning
Modifié en dernier par Vlad Tepesch le 25 Aoû 2006 à 08:58, modifié 1 fois.
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar Vlad Tepesch » 24 Aoû 2006 à 11:49

Erreurs SQL

Une erreur SQL est liée à la base de données. On les remarque vite, car le message SQL Error apparaît.
NOTE : Voici un lien vers un tutorial sur les requêtes SQL.

Voici une liste des SQL Error les plus fréquentes :

----------------------------------------------------------------

Code: Tout sélectionner
Could not query config information

DEBUG MODE

SQL Error : 1146 Table 'compte.NOM_TABLE_EN_MAJUSCULE' doesn't exist

SELECT * FROM NOM_TABLE_EN_MAJUSCULE

Line : XX
File : fichier.php 


CAUSE : Cette erreur signifie que la table n'existe pas. Toutefois, les noms de table dans phpBB ne sont jamais en majuscules. Par contre, les constantes contenant le nom des tables et sont utilisées un peu partout dans phpBB sont en majuscules. Ce problème n'est donc pas un vrai problème SQL mais une erreur de conversion entre la constante et le nom de la table.
SOLUTION : Vérifiez soigneusement votre fichier include/constants.php, une erreur a dû s'y glisser. Peut-être un oubli au moment de l'installation du MOD.

----------------------------------------------------------------

Code: Tout sélectionner
Could not obtain information

DEBUG MODE

SQL Error : 1054 Unknown column 'champ' in 'order clause'

requete

Line : XX
File : fichier.php 


CAUSE : Cette erreur signifie qu'un champ SQL utilisé n'est pas trouvé. Il manque une information dans une de vos tables.
SOLUTION : Vous avez dû oublier d'executer certaines requêtes au moment de l'installation du MOD. Vérifiez les passages SQL du fichier d'installation pour être sûr de n'en avoir raté aucun.
NOTE : L'erreur SQL 1054 se décline de plusieurs façons. Ici, il est écrit in 'order clause', mais on peut voir des in 'field list', des in 'where clause' etc.

----------------------------------------------------------------

Code: Tout sélectionner
Could not query information

DEBUG MODE

SQL Error : 1146 Table 'phpbb_table' doesn't exist

requete

Line : XX
File : fichier.php 


CAUSE : Cette erreur signifie qu'une table SQL utilisée n'est pas trouvée. Il manque une de vos tables.
SOLUTION : Vous avez dû oublier d'exécuter certaines requêtes au moment de l'installation du MOD. Vérifiez les passages SQL du fichier d'installation pour être sûr de n'en avoir raté aucun.

----------------------------------------------------------------

Code: Tout sélectionner
Erreur
requête SQL:

INSERT INTO phpbb_adr_shops( shop_id, shop_owner_id, shop_name, shop_desc )
VALUES ( 1, 1, 'Adr_shop_forums', 'Adr_shop_forums_desc' ) ;



MySQL a répondu:

#1062 - Duplicate entry '1' for key 1 


CAUSE : Cette erreur signifie que la requête ne peut pas fonctionner parce qu'il y a déjà cet id dans la base.
SOLUTION : Vous avez dû executer plusieurs fois certaines requêtes au moment de l'installation du MOD. Vérifiez que toutes les requêtes ont bien été exécutées. Ca devrait bien se passer. Si il y a vraiment des problèmes, il faudra peut être refaire les requêtes à l'envers (détruire les tables au lieu de les créer etc) afin d'avoir une base propre avant de retenter l'install du MOD. Le plus simple étant bien sur de repartir d'une sauvegarde de la base avant l'installation du MOD.

----------------------------------------------------------------

Code: Tout sélectionner
Erreur

Il semble qu'il y ait une erreur dans votre requête SQL. Le message ci-bas peut vous aider à en trouver la cause.

ERROR: Ponctuation invalide @ 1
STR: <?
SQL: <?php

define('IN_PHPBB', true);


requête SQL:

MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<?php

define('IN_PHPBB', true)' at line 1


CAUSE : Cette erreur signifie que SQL n'a rien compris au fichier que vous lui avez fait charger. Il y a une raison simple, c'est un fichier php, pas un fichier sql.
SOLUTION : Vous avez tenté de charger un fichier PHP au lieu d'un fichier SQL. Si ce fichier porte un nom du style db_install.php ou db_update.php, il contient bien des requêtes mais ne doit pas être lancé ainsi : vous devez l'appeler sous la forme http://www.monsite.com/db_install.php
Modifié en dernier par Vlad Tepesch le 14 Sep 2006 à 16:00, modifié 8 fois.
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar Vlad Tepesch » 24 Aoû 2006 à 14:17

Erreurs Critiques

Une erreur critique est très handicapante, car tant qu'elle ne sera pas résolue, rien ne s'affichera. Elle a donc tendance à provoquer une grosse panique chez les utilisateurs. Ne vous en faites pas, elle se résoud très bien :)

Voici une liste des erreurs critiques les plus fréquentes :

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: parse error in fichier.php on line XX 


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP.
SOLUTION : Celle-ci est difficile à réparer par un débutant. En règle général, ce qu'il faut savoir est que la ligne indiquée est fausse. En général, l'erreur est juste au dessus. Une parse error peut être provoquée par un oubli du ; un "{" sans "}", ou un "(" sans ")". Il faut donc vérifier tout cela et essayer de rêgler le problème, en général, lors de l'installation d'un MOD, un ) effacé etc.

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: parse error, unexpected ',' in fichier.php on line XX 


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP. Pour être plus précis, une "," qui ne devrait pas se trouver là.
SOLUTION : Cette erreur arrive souvent quand on insère un bout de MOD dans une requete SQL. Il faut donc s'assurer que toutes les virgules sont entre deux ". Le moyen le plus simple est une colorisation syntaxique du code, qui vous montrera vite l'endroit en question.

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in fichier.php on line XX


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP. Pour être plus précis, une chaine de caractères ne se trouvant pas entre les signes " ou ' qui ne devrait pas se trouver là.
SOLUTION : Cette erreur arrive souvent quand on insère un bout de MOD dans une requête SQL. Il faut donc s'assurer que toutes les chaines de caractères se trouvent entre des quotes (" ou '). La encore, la colorisation est un bon outil. Les seules choses pouvant être à l'extérieur des quotes sont les variables (qui commencent par $), les fonctions (qui se terminent par () ) et les constantes (qui sont écrites en majuscules et définies dans constants.php). Revérifiez soigneusement le code aux alentours de cette zone. C'est une des rares parse errors où la ligne affichée est bien la ligne où se trouve l'erreur.

----------------------------------------------------------------

Code: Tout sélectionner
Fatal error: Call to undefined function: nom_fonction() in fichier.php on line XX 


CAUSE : Cette erreur est provoquée lors d'un appel à une fonction qui n'existe pas.
SOLUTION : Vous avez surement oublier de modifier un fichier où la fonction devait être incluse. Cherchez cette fonction dans le fichier d'installation du MOD pour voir dans quel fichier elle est déclarée, puis essayez de voir si vous l'avez dans votre fichier. Si elle est dans le fichier, peut être avez vous rater une ligne de type "include('mon_fichier_contenant_mes_fonctions');" qui empêche la déclaration de la fonction.
Dernier cas rare : la fonction est dans le fichier, l'include fonctionne et ne déclenche pas de warning, mais la fonction n'est pas déclaré : votre fichier a eu une erreur de transfert et ne fait pas la bonne taille sur le serveur, d'où l'absence de la fonction.

NOTE : une déclaration de fonction ressemble à ceci :
Code: Tout sélectionner
function nom_fonction()
{
  //plein de code
}


----------------------------------------------------------------

Code: Tout sélectionner
Parse error: syntax error, unexpected $end in fichier.php on line XX 


CAUSE : Cette erreur indique que PHP a été fermé (avec ?> donc) de façon anormale.
SOLUTION : Vérifiez si vous n'avez pas oublié un ; à la dernière ligne juste avant le ?>. Sinon, il va falloir équilibrer pour trouver l'erreur, car un { a été ouvert sans être fermé (par un }). Vous allez donc devoir compter les { et voir s'il y en a autant que de }. Soyez prudent dans les endroits que vous avez modifiés.

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: syntax error, unexpected T_VARIABLE, expecting T_WHILE in fichier.php on line XX 


CAUSE : Cette erreur indique qu'un do while n'a pas été écris correctement.
SOLUTION : Vérifiez l'ordre des { } car c'est souvent de là que ça vient. La syntaxe exacte du do while est :
Code: Tout sélectionner
do
{
}while();


----------------------------------------------------------------

Code: Tout sélectionner
Fatal error: Cannot redeclare nom_fonction() (previously declared in fichier.php:XX) in fichier on line XX


CAUSE : Cette erreur indique qu'une fonction a été déclarée 2 fois. Elle indique aussi que c'est dans le même fichier et à la même ligne (enfin, en général :P)
SOLUTION : Vous avez mis 2 fois la ligne de l'include. Si ce n'est pas le cas, le MOD ne fonctionne pas correctement ou est mal conçu. Mais vous pouvez l'améliorer sans soucis en remplaçant include('fichier'.$ext) par include_once('fichier'.$ext) Cela fera disparaître le problème.
NOTE : dans certains cas, au lieu d'include, il est écris require, mais cela fonctionne pareil : require_once.

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: syntax error, unexpected T_ELSE in fichier.php on line XX  


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP. En fait, il y a un else mal placé.
Par exemple :

Code: Tout sélectionner
if()
{
else
{
}

SOLUTION : Il se peut que ce soit comme sur l'exemple, un } oublié. Ou alors, le else traine n'importe où sans if avant. La syntaxe exacte du if else est :
Code: Tout sélectionner
if()
{
}
else
{
}


----------------------------------------------------------------

Code: Tout sélectionner
Parse error: syntax error, unexpected T_BOOLEAN_OR in fichier.php on line XX  


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP. En fait, il y a un booleen mal placé dans une expression.
Par exemple :

Code: Tout sélectionner
if(empty($bidule) OR empty($truc)

SOLUTION : Il se peut que ce soit comme sur l'exemple, un ) oublié. Ou alors, le booleen traine n'importe où. Dans tout les cas, la solution devrait vous sauter aux yeux rapidement.

----------------------------------------------------------------

Code: Tout sélectionner
Parse error: syntax error, unexpected '.' in fichier.php on line XX  


CAUSE : Cette erreur est provoquée par une mauvaise syntaxe dans le fichier PHP. En fait, il y a une concaténation (bon, c'est vrai, un mot savant à la con, bon, il manque un . en fait) qui est très mal placé. Une concaténation ne peut être mis que entre deux variables (les trucs qui ont un $ au début) ou entre deux chaines de caractères (les trucs entre quote, avec des ' ou des " au début et à la fin) .
Par exemple (provoquera l'erreur) :

Code: Tout sélectionner
'(du blabblab'.$variable . );

SOLUTION : En général, ajouté un ' ou un " juste après le . permet de résoudre le problème.
Modifié en dernier par Vlad Tepesch le 14 Sep 2006 à 16:12, modifié 11 fois.
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris

Messagepar Vlad Tepesch » 24 Aoû 2006 à 14:24

Warning

Un warning est l'erreur la moins génante. En effet, malgré le warning, le forum fonctionnera ! Enfin, en partie. De plus, il est très laid et souvent placé n'importe comment, donc génant !

Voici une liste des warnings les plus fréquents :

----------------------------------------------------------------

Code: Tout sélectionner
Warning: main(fichier.php): failed to open stream: No such file or directory in /fichier2.php on line XX 


CAUSE : Cette erreur signifie qu'un fichier n'a pas été trouvé. Le nom du fichier manquant est indiqué entre parenthèse.
SOLUTION : D'abord, vérifiez que le fichier est bien dans le dossier où on l'attend. Peut être l'avez vous mis dans un mauvais dossier. Si vous ne trouvez pas le fichier dans un mauvais dossier, c'est que vous ne l'avez pas envoyer sur le serveur. Dans tout les cas, la mise du fichier au bon endroit rêglera ce problème.

----------------------------------------------------------------

Code: Tout sélectionner
Warning: Cannot modify header information - headers already sent by (output started at fichierX.php:LigneX) in fichierY.php on line Y 


CAUSE : Cette erreur signifie qu'un fichier a essayé d'envoyer une information de header après le début de l'output, ce qui est interdit par le protocole HTTP. Dans le protocole, on envoie les headers puis les output, interdit de revenir au header ensuite. La cause de l'erreur est surement un output accidentel.
SOLUTION : Ce genre d'erreur arrive souvent quand il y a une ligne vide avant le <?php. Vérifiez qu'il n'y a rien en dehors des balises <?php ?>, même pas une ligne vide. En effet, ces lignes sont considérés comme des outputs. Une astuce, le warning affiche l'endroit où l'ouput a commencé, soit ligneX dans fichierX.php
Avatar de l’utilisateur
Vlad Tepesch
Grand-maître des floodeurs
Grand-maître des floodeurs
 
Messages: 3420
Enregistré le: 04 Juil 2005 à 17:23
Localisation: Paris


Retourner vers [phpBB 2.0.x] Forum de documentation

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité