DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:tips:findbadphp.php

findbadphp.php

Utilisez ce script pour trouver les fichiers PHP corrompus. Placez-le à la racine de votre wiki et appelez le depuis votre navigateur.

findbad.php
<?php
/**
 * Ce script vas chercher tous les fichiers PHP dans le dossier
 * courant et inférieur et chercher des retour à la ligne, des
 * espaces blancs et des BOMs UTF-8
 */
 
header("Content-Type: text/plain");
 
echo "Début du script...\n";
flush();
traverse(dirname(__FILE__));
echo "Fin du script...\n";
 
function traverse($dir){
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            //On ignore les fichiers cachés et les dossiers en majuscules
                        if(preg_match('/^[\._]/',$file)) continue;
            if(is_dir($dir.'/'.$file)){
                traverse($dir.'/'.$file);
                continue;
            }
            flush();
 
            if(!preg_match('/\.php$/',$file)) continue;
            $check = @file_get_contents("$dir/$file",0,null,0,3);
            if(!$check){
                echo "$dir/$file n'est pas accessible en lecture.\n";
                continue;
            }
 
            if($check == "\xef\xbb\xbf"){
                echo "$dir/$file a des BOM UTF-8 au début.\n";
                continue;
            }
 
            if($check != '<?p'){
                echo "$dir/$file ne commence pas par <?php\n";
                continue;
            }
 
            $check = file_get_contents("$dir/$file",0,null,
                                filesize("$dir/$file")-5,5);
            $pos = strpos($check, '?>');
            if($pos !== false && !(substr($check,-2) == '?>' || substr($check,-3) == "?>\n") ){
                echo "$dir/$file a un retour à la ligne après avoir fermé la balise ?>\n";
                continue;
            }
       }
       closedir($dh);
   }
}
fr/tips/findbadphp.php.txt · Dernière modification : 2017-11-02 15:48 de 161.106.4.5

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki