diff --git a/setup/test/lint.php b/setup/test/lint.php
index 01c97df9fedf71aa6d0a416f754c0484955cc57f..c25f7acec092a0a17e0dcf295173cc742b480329 100644
--- a/setup/test/lint.php
+++ b/setup/test/lint.php
@@ -14,16 +14,53 @@ function get_osticket_root_path() {
 
 $root = get_osticket_root_path();
 
+# Check PHP syntax across all php files
+function glob_recursive($pattern, $flags = 0) {
+    $files = glob($pattern, $flags);
+    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) 
+            as $dir) {
+        $files = array_merge($files, 
+            glob_recursive($dir.'/'.basename($pattern), $flags));
+    }
+    return $files;
+}
+echo "PHP Syntax Errors: ";
+ob_start();
+$scripts=glob_recursive("$root/*/*.php");
+$exit=0;
+$syntax_errors="";
+foreach ($scripts as $s) {
+    system("php -l $s", $exit);
+    $line = ob_get_contents();
+    ob_clean();
+    if ($exit !== 0)
+        $syntax_errors .= $line;
+}
+ob_end_clean();
+
+if (strlen($syntax_errors)) {
+    $syntax_errors=str_replace("$root/", '', $syntax_errors);
+    echo "FAIL\n";
+    echo "-------------------------------------------------------\n";
+    echo "$syntax_errors";
+    exit();
+} else {
+    echo "\n";
+}
+
 # Run phplint across all php files
+echo "Access to unitialized variables: ";
 ob_start();
 # XXX: This won't run well on Windoze
-system("$root/setup/test/lib/phplint.tcl $root/**/*.php 2>&1");
+system("$root/setup/test/lib/phplint.tcl ".implode(" ", $scripts));
 $lint_errors = ob_get_clean();
-$lint_errors=str_replace("$root/", '', $lint_errors);
 
 if (strlen($lint_errors)) {
-    echo "FAIL: Access to unitialized variables\n";
+    $lint_errors=str_replace("$root/", '', $lint_errors);
+    echo "FAIL\n";
     echo "-------------------------------------------------------\n";
     echo "$lint_errors";
+} else {
+    echo "\n";
 }
 ?>