12
votes

Est-il possible de vérifier la syntaxe de fichier PHP de PHP?

Je charge des fichiers de classe PHP dynamiquement avec AutoLoad. Et ces fichiers pourraient être manquants ou corrompus par une raison quelconque.

AutoLoad Signalera avec succès les fichiers manquants afin que la logique d'application puisse gérer cela. Mais si ces fichiers sont corrompus, l'ensemble du traitement s'arrête avec un écran vide pour l'utilisateur et «Erreur PHP Payse: erreur de syntaxe» dans le journal des erreurs.

est-il possible de vérifier la syntaxe du fichier PHP à partir du code PHP ?

J'ai regardé ici: http : //us.php.net/manual/fr/function.php-check-syntax.php - Il est obsolète.

et xxx

semble être une mauvaise manière ( http://bugs.php.net/bug .php? id = 46339 )

pensées?


2 commentaires

Vous envisagez vraiment de vérifier la syntaxe de chaque fichier que vous souhaitez inclure chaque fois qu'un script est exécuté?


Pas exactement. J'ai une sorte de classe spéciale qui pourrait être potentiellement corrompue, pas toutes.


4 Réponses :


0
votes

En bref: Je ne peux pas voir un moyen de le faire, mais j'ai une idée qui pourrait être suffisante.

Il existe des programmes de surveillance des journaux ou peut filtrer les journaux via des outils standard pour les fichiers avec des erreurs d'analyse. Si un fichier apparaît, vous mettez le nom de fichier Villain dans une liste noire et votre autochargeur vérifie avant de charger sur cette liste.

Avec cette méthode, vous servirez à la première fois un écran vide (la déclaration d'erreur Assumig à la sortie est activée sur les serveurs de production), mais la seconde aura une page sans le composant défectueux.

Dans l'autoloadeur, vous devez avoir un schéma de liste ou de nommage pour toujours essayer de charger des classes obligatoires (d'autres moyens de votre application pourraient être dans un état incohérent)


2 commentaires

J'ai supposé qu'il (son système) n'a aucun contrôle sur ces fichiers au moment de la construction.


Une idée intéressante, alors que je pense qu'il n'est pas bon de rendre la vérification de la syntaxe dépendante de l'utilisateur visitant le site. Même si seulement la première obtiendra la page vierge.



4
votes

Vous ne devriez vraiment pas essayer de vérifier les fichiers PHP non correct au moment de l'exécution: il tuera le temps de réponse de votre application!

Un "meilleur moyen" serait d'utiliser php -l de la ligne de commande lorsque vous avez terminé de modifier un script PHP; ou inclure-le dans votre processus de construction si vous utilisez un; Ou branchez-le comme un crochet de pré-validation SVN si vous utilisez svn et peut définir SVN Hooks .

À mon avis, presque toutes les recherches seraient meilleures que de vérifier vous-même à l'heure d'exécution!


Considérant des erreurs comme celles que vous souhaitez éviter ne se produira probablement pas souvent, c'est probablement préférable de les laisser se produire.
La seule chose est la suivante: activer les journaux et les surveiller, la possibilité de détecter rapidement quand Tere est un problème: -)


Bien sûr, cela ne vous empêche pas de traiter avec le cas de fichiers manquants; Mais c'est une question différente ...


2 commentaires

Merci pour votre réponse. Réponse "Non, pas avec une performance raisonnable" est une option valide. SVN Crochet de pré-validation est une bonne idée et je pense résoudre notre problème dans la plupart des cas.


Vous êtes la bienvenue :-) Ok à propos de SVN SVN Crochet de pré-validation: Lorsque vous êtes admin du serveur SVN, les crochets sont vraiment excellents à utiliser!



3
votes

Une autre façon, vous pouvez faire un fichier PHP dans votre répertoire racine appelé checksyntax.php xxx

maintenant, ouvrez votre fichier BASHRC pour créer un raccourci pour exécuter ce fichier. Ajouter ci-dessous ligne pour exécuter checksyntax.php xxx

et maintenant goto votre répertoire source do svn st.

IT indique que vous lisez la liste des fichiers, maintenant facilement exécuté La commande. xxx

Ceci vérifiera tous vos fichiers passant comme des arguments.

Profitez :)


0 commentaires

0
votes

Vous pouvez également effectuer des tests unitaires, où vous chargez le PHP que vous exécutez de manière dynamique et affirmez que EXED («nom de fichier PHP -L $») est valide. Si vous avez fait cela que vous pourriez le vérifier une fois dans vos tests, la générer avec des variables appropriées et avoir un niveau de confiance raisonnable que votre PHP était bon.


0 commentaires