Erreur de syntaxe PHP : comment y remédier ?
Quelle est l'erreur grammaticale ?
PHP est un langage de programmation impératif de style C. Il a des règles de syntaxe strictes et ne peut pas récupérer lorsqu'il rencontre un symbole ou un identifiant mal placé. Il ne peut pas deviner vos intentions de programmation.
Meilleurs conseils
Il y a quelques précautions de base que vous pouvez toujours prendre :
- Utilisez une indentation de code appropriée, ou adoptez n'importe quel bon style de codage . La lisibilité aide à éviter les exceptions.
- Utilisez un IDE PHP ou un éditeur avec coloration syntaxique . Cela aide également à l’équilibre entre supports et supports.
- Lisez attentivement les références linguistiques et les exemples dans le manuel. Lisez-le deux fois pour acquérir un certain niveau de maîtrise.
Comment interpréter les erreurs de l'analyseur
Un message d'erreur de syntaxe typique est le suivant :
Erreur d'analyse : erreur de syntaxe, inattendue dans la ligne 217 du fichier.php T_STRING, nécessite ';'
qui répertorie les possibles emplacements des erreurs de syntaxe. Voir le Nom du fichier et le Numéro de ligne mentionnés. Un en-tête comme
T_STRING explique quel symbole l'analyseur/tokenizer n'a finalement pas réussi à gérer. Cependant, ce n’est pas nécessairement la cause de l’erreur de syntaxe.
Il est important de regarder également les lignes de code qui précèdent . Souvent, les erreurs grammaticales ne sont que des erreurs mineures survenues plus tôt. Le numéro de ligne d'erreur est l'endroit où l'analyseur abandonne finalement la gestion de toutes les erreurs.
Corriger les erreurs de grammaire
Il existe de nombreuses façons de réduire et de résoudre les problèmes de grammaire.
-
Ouvrez le fichier source mentionné. Consultez la ligne de code mentionnée.
- Pour les cordes emballées et les opérateurs égarés, vous pouvez généralement y trouver le coupable.
- Lisez la ligne de gauche à droite et imaginez ce que fait chaque symbole.
-
Plus couramment, il faut regarder la ligne qui précède .
- En particulier, le point-virgule est manquant ; le point-virgule est manquant à la fin d'une ligne/instruction précédente. (Au moins du point de vue du style)
- Si le bloc de code { } n'est pas correctement fermé ou imbriqué, vous devrez peut-être approfondir le code source. Pour ce faire, utilisez une indentation de code appropriée.
-
Découvrez la Coloration syntaxique !
- Les chaînes, variables et constantes doivent toutes avoir des couleurs différentes.
- les opérateurs -*/ doivent également être colorés différemment, sinon ils pourraient être dans le mauvais contexte.
- Si vous voyez un ombrage de chaîne s'étendre trop loin ou trop court, alors vous avez trouvé un marqueur de chaîne " ou ' de fermeture non échappé ou manquant.
- Si vous voyez ensuite deux signes de ponctuation de la même couleur les uns envers les autres peuvent aussi signifier des problèmes. Habituellement, si ce n'est pas le cas, -- ou des parenthèses suivant un opérateur, l'opérateur est seul. La plupart du temps, il est incorrect que deux chaînes/identifiants soient directement adjacents aux espaces
-
Vos amis . suivez n’importe quel style de codage . >
Scinder temporairement les longues lignes -
Vous pouvez librement ajouter des nouvelles lignes
commentez le code problématique - Si vous ne parvenez pas à déterminer la source du code problématique. le problème, commencez à commenter (c'est-à-dire à supprimer temporairement) le code block.
Dès que vous résolvez l'erreur d'analyse, vous trouverez la source du problème
Parfois, vous souhaitez supprimer temporairement le bloc fonction/méthode complet. et erreur d'indentation de code)
- comme Si vous ne parvenez pas à résoudre le problème de syntaxe, essayez de
réécrire les sections commentées à partir de zéro -
-
- pour éviter certaines structures syntaxiques déroutantes en tant que débutant.
Tternaire : un opérateur conditionnel peut réduire la génération code, et fonctionne. Mais cela n'aide pas à la lisibilité dans tous les cas. Lorsque vous n'êtes pas compétent, essayez de vous en tenir aux instructions if ordinaires (if:/elseif:/endif; ) qui sont souvent utilisées pour les modèles, mais ne sont sans doute pas aussi bonnes. comme Les blocs { code } sont faciles à suivre > " ou '. Les guillemets de chaîne ne correspondent pas et il y a des guillemets non échappés -
Oubliez l'opérateur, en particulier l'opérateur
pour la concaténation. Comptez-les dans les lignes signalées. Leurs quantités sont-elles égales ? -
-
N'oubliez pas que résoudre un problème de grammaire peut en révéler un autre.
- Si vous faites disparaître un problème, mais que d'autres problèmes apparaissent dans le code ci-dessous, vous êtes pour la plupart sur la bonne voie.
- Si une nouvelle erreur de syntaxe apparaît dans la même ligne après la modification, vos tentatives de modification peuvent également échouer. (Mais pas toujours)
-
Si vous ne parvenez pas à le réparer, restaurez une sauvegarde de votre code qui fonctionnait auparavant.
- Adopter le système de contrôle de version du code source. Vous pouvez toujours voir la différence entre la corruption et la dernière version fonctionnelle. Cela pourrait expliquer quel est le problème de syntaxe.
-
Caractères Unicode parasites invisibles : Dans certains cas, vous devez utiliser un éditeur hexadécimal ou un autre éditeur pour le code source/la visionneuse. Certains problèmes ne peuvent pas être découverts en examinant le code.
- Essayez grep --color -P -n "[x80-xFF]" file.php comme première étape pour trouver des symboles non-ASCII.
- En particulier, les nomenclatures, les espaces de largeur nulle ou les espaces insécables et les guillemets intelligents se retrouvent souvent dans le code source. -
-
Notez le type de saut de ligne enregistré dans le fichier.
- PHP ne prend en charge que le caractère de saut de ligne n et ne prend pas en charge le caractère de retour chariot r.
- C'est parfois un problème uniquement pour les utilisateurs de MacOS (même sous OS X qui est utilisé pour mal configurer l'éditeur).
- Lors de l'utilisation de commentaires // ou # sur une seule ligne, cela ne pose généralement des problèmes que lorsque les nouvelles lignes sont ignorées. Les commentaires multilignes /.../ interfèrent rarement avec l'analyseur lorsque les nouvelles lignes sont ignorées.
-
Si votre erreur de grammaire n'est pas transmise sur le réseau : Il y a une erreur de syntaxe sur votre machine. Mais publier exactement le même fichier en ligne ne se reproduira plus. Cela ne peut signifier qu'une des deux choses suivantes :
- Vous regardez le mauvais fichier !
- Ou votre code contient de l'Unicode parasite invisible (voir ci-dessus). Vous pouvez le découvrir facilement : copiez simplement le code du formulaire Web dans votre éditeur de texte.
-
Vérifiez votre version PHP. Toutes les constructions de syntaxe ne sont pas nécessairement disponibles sur tous les serveurs.
- Le php -v de l'interpréteur de ligne de commande
- appelé via le serveur Web
Ce ne sont pas nécessairement les mêmes . Surtout lorsque vous utilisez des cadres, vous devez les faire correspondre.
- N'utilisez pas de mots-clés réservés PHP comme identifiants pour les fonctions/méthodes, classes ou constantes.
- L'expérimentation est votre dernier recours.
Si tout le reste échoue, vous pouvez toujours rechercher votre message d'erreur sur le Web. Les symboles de syntaxe ne sont pas facilement consultables (Stack Overflow lui-même est indexé par SymbolHound). Cela peut donc vous prendre plusieurs pages pour trouver les informations pertinentes.
Lecture approfondie
- "Les bases du débogage PHP" de David Sklar
- "Réparer les erreurs PHP" de Jason McCreary
- "Erreurs PHP de Mario Lurig—— 10 erreurs courantes 》
- 《PHP commun Erreurs et solutions》
- Comment dépanner et réparer votre site Web WordPress
- Guide du concepteur sur les messages d'erreur PHP - Smashing Magazine
Écran blanc mort
Si votre site Web est tout simplement vide, l'erreur habituelle est une erreur de syntaxe. Activez leur affichage en utilisant :
- error_reporting = E_ALL
- display_errors = 1
généralement dans votre php.ini, ou dans le cas de mod_php Via . htaccess et même pour les paramètres FastCGI via .user.ini.
Il est trop tard pour l'activer dans un script défectueux car PHP ne peut même pas interpréter/exécuter la première ligne. Une solution rapide consiste à créer un script wrapper comme test.php:
puis à appeler le code défectueux en accédant à ce script wrapper.
Il est également utile d'activer le error_log de PHP et de consulter le error.log du serveur Web lorsque le script plante et reçoit une réponse HTTP 500.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!