Script Linux Shell permettant de vérifier la syntaxe PHP sur un serveur distant

Directement inspiré de la FAQ PHP de developpez.com ( Comment vérifier la syntaxe des scripts php dans plusieurs centaines de fichiers en quelques secondes ) je l’ai modifié pour en faire un utilitaire bien pratique pour vérifier un site PHP en SSH (Root) directement sur le serveur distant.

Le script parcourt le répertoire courant ainsi que tous les sous-répertoires.

Le shell utilisé ici est Bash .

Le résultat est affiché dans  la fenêtre de shell, en même temps un fichier est généré avec le résultat. Lorsque des erreurs sont détectées, elles sont insérées dans le fichier avec le chemin du fichier en question.

Le résultat affiche également le nombre de fichiers exécutés, le nombre d’erreurs trouvées et pour information , le nombre de lignes de code dans les fichiers php (code PHP ou HTML,  JS, etc…)

Le script a l’avantage de n’avoir pas besoin de passer de paramètres ou de chemin.

Pour l’utiliser :
A l’aide d’un client SSH (Putty / WinSCP) , en root uploadez le fichier chekphp.sh à la racine de votre site Web puis placez vous dans le dossier racine du site Web et exécutez la commande : bash checkphp.sh et c’est tout !

?Download checkphp.sh
 #!/bin/bash
#
# Script permettant la verification syntaxique de scripts PHP du repertoire courant
# Auteur : Thierry Godin
# Script cree le 01/04/2009
# http://www.n1bus.fr
# Utilisation :
#-------------
# Copier le fichier a la racine du repertoire Web en tant que "Root"
# En SSH , toujours en Root, executez la commande : bash chekphp.sh
# Le resultat sera affiche a l'ecran
# Les erreurs seront enregistrees dans le fichier __result_checkphp_<% date %>.txt
# qui sera cree a la racine du site
#
# Si necessaire, modifiez le chemin vers le binaire PHP (PHPDIR)
#=========================================
 
# Declaration des variables
NOW=`date +%Y%m%d%H%M`                               # Date du jour ex : 20050820 - Annee(4) Mois(2) Jour(2) -
LGF=`pwd`/__result_checkphp_`date +%Y-%m-%d`.txt     # Fichier resultat
PHPDIR=/usr/bin/php5                                 # Chemin vers binaire PHP
THEDIR=`pwd`/
NB=0
NBERRORS=0
NBLINESTOTAL=0
#==============================
 
echo "`date +%Y-%m-%d:%H:%M:%S` - Debut verification syntaxe PHP." 
echo "Emplacement : $PWD" 
 
echo "> `date +%Y-%m-%d:%H:%M:%S` - Debut verification syntaxe PHP." > $LGF   2>&1
echo "> Emplacement : $PWD" >> $LGF   2>&1
echo " "  >> $LGF   2>&1 
echo "---------------ERREURS-------------------"  >> $LGF   2>&1 
 
find $THEDIR -name \*.php -exec $PHPDIR -l {} \; 2>> $LGF 1> /dev/null  
 
for FICH in  `find $THEDIR -name \*.php` ; do
  NB=$(( $NB + 1 ))
  X=0
  X=$(sed -n '$=' $FICH)
  NBLINESTOTAL=$(( NBLINESTOTAL + X))
done
 
echo "----------------------------------------"  >> $LGF   2>&1 
echo " "  >> $LGF   2>&1 
echo "> Verification terminee ."  >> $LGF   2>&1
echo ">   - Fichiers verifies : $NB"  >> $LGF   2>&1
 
NBLINES=$(sed -n '$=' $LGF)
NBERRORS=$(( $NBLINES - 8))
echo ">   - Fichiers en erreur : $NBERRORS" >> $LGF   2>&1
echo ">   - Nombre total de lignes de code dans les fichiers PHP : $NBLINESTOTAL" >> $LGF   2>&1
 
echo "Verification terminee"
echo "   - Fichiers verifies : $NB"
echo "   - Fichiers en erreur : $NBERRORS"
echo "   - Nombre total de lignes de code dans les fichiers PHP : $NBLINESTOTAL"
 
#
# end
#

Script testé sur un serveur Linux OpenSuse 11 / PHP5

Le fichier généré __result_checkphp_2009-05-15.txt :

> 2009-05-15:23:43:51 - Début verification syntaxe PHP.
> Emplacement : /home/www/******/html/secure/*******

—————ERREURS——————-
—————————————-

> Verification terminée .
> - Fichiers vérifiés : 302
> - Fichiers en erreur : 0
> - Nombre total de lignes de code dans les fichiers PHP : 54325