#!/usr/bin/php false, 'recurse' => false, )); if ($options['quiet']) { ob_start(); } // ============= // = Scan path = // ============= $files = getPipedFiles(); $path = $_SERVER['PWD']; // Default to execution directory // Piped files present if ($files) { foreach ($files as $file) { checkFile("$path/$file"); } } // Use arguments else { if ($_SERVER['argc'] > 1) { $last = end($_SERVER['argv']); if (substr($last, 0, 1) != '-') { $path = $last; // snag last argument, if it wasn't an option switch } } if (is_dir($path)) { checkDirectoryContents($path); } elseif (is_file($path)) { checkFile($path); } else { echo "$path is not a file or directory.\n"; showHelp() AND exit(1); } } if ($options['quiet']) { ob_end_clean(); } echo "\n$count files checked, " . count($errors) . ' errors.'; echo "\n", implode($errors,''); function checkDirectoryContents($dir) { global $options, $i, $errors, $count; $contents = scandir($dir); foreach($contents as $content) { if ($content == '.' || $content == '..') { continue; } $path = "$dir/$content"; // Recurse into directories if (is_dir($path) && $options['recurse']) { checkDirectoryContents($path); } // if is_dir else { checkFile($path); } // !is_dir } // foreach } // function checkDirectoryContents function checkFile($path) { global $count, $errors; // echo "$path\n"; // Skip non-php files if (substr($path, -4) != '.php') { return false; } if (($count % 60 == 0)) { echo "\n"; } $error = `php -l $path 2>&1 1> /dev/null`; if ($error) { $errors[] = $error; echo 'E'; } else { echo '.'; } $count++; } function getPipedFiles() { $files = array(); stream_set_blocking(STDIN,FALSE); while ($line = trim(fgets(STDIN))) { $files[] = $line; } return $files; } function setOptions($options) { $args = array_keys(getopt('qRh', array('quiet', 'recursive', 'help'))); foreach ($args as $arg) { switch ($arg) { case 'q': case 'quiet': $options['quiet'] = true; break; case 'R': case 'recursive': $options['recurse'] = true; break; case 'h': case 'help': default: showHelp() AND exit(0); } // Switch } // Foreach args return $options; } // function setOptions function showHelp() { echo <<