My fellow web geeks might find this script, php-check download home on the range movie , useful. It recursively scans a directory checking PHP files for syntax errors.
Just copy it somewhere in your path (like /usr/local/bin
) and chmod it to 755.
I wrote the script because I edit PHP using Notepad++, so it’s easy for small typos to enter my scripts. I needed a quick way to scan a directory after uploading revised files.
I wrote it in PHP so that those who need it will also know how to customize it.
[php]
#!/usr/bin/php
?php
// php-check version 1.0
// recursively scans a directory for .php files and runs php ‑l on
// them (php ‑l checks for PHP syntax errors)
// revisions at http://glenandpaula.com/wordpress/archives/2007/10/31/scanning-a-directory-for-php-errors/
if (php_sapi_name()!=‘cli’) {
die(“This utility can only be run from the command line.\n”);
}
$counter=0;
$errors=false;
function scan_dir($dir) {
$counter=0;
$dh=opendir($dir);
while ($file=readdir($dh)) {
if ($file==’.’ || $file==’..’) continue;
if (is_dir($dir.’/’.$file)) {
$counter+=scan_dir($dir.’/’.$file);
} else {
if (substr($file, strlen($file) — 4) == ‘.php’) {
$counter++;
$output=shell_exec(“/usr/bin/php ‑l $dir/$file 2>&1”);
if (substr($output,0,2)!=‘No’) { // skips the “No syntax errors in …” message
$errors=true;
echo $output;
}
}
}
}
return $counter;
}
if ($argc!=2) {
die(“Usage: php-check dirname (usually php-check .)\n”);
}
if (!is_dir($argv[1])) {
die(“Argument must be a directory. The most common usage is php-check .\n”);
}
$counter=scan_dir($argv[1]);
echo “$counter files checked\n”;
exit($errors);
?>
[/php]
This is a quick and dirty script — there are probably some bugs in it. User beware.
If you find it helpful, you might also want to check out scripts like PHP CodeSniffer
2,780 thoughts on “Scanning a Directory For PHP Errors”