利用php的自带检查文件方法 php -l 来使用shell 批量检查某目录下的文件,每次写完脚本都要 php -l 一下,看看有没有发生低级的语法错误,(疏忽过导致事故),写了个简单的shell 脚本批量检查目录下的 php文件语法,代码如下:
 
  check_php_syntax.sh
  
  #!/bin/bash
  # check php syntax  
  if [ $# -lt 1 ];then
      echo 'Usage: ' $0  'directory';
      exit
  fi
  if [ ! -d $1 ];then
      echo $1  'not a directory,please check!';
      exit
  fi
  directory=$1
  temp_file="/tmp/file$$"
  #echo $temp_file
  ls -R $directory | awk  '
      BEGIN{
          FS="n"     
          folder="'$directory'"
          logname="'$temp_file'"
      }
      {
          if($0~/.php$/){
              system("php -l " folder "/" $0  "   >>  " logname  " 2>&1")   
          }
          if($0~/:$/){
              folder=substr($1,1,length($1)-1)
          }
      }
  '
  if [ -e $temp_file ];then
      cat $temp_file | awk '
          BEGIN{
              error = 0
         }
          {
              if($0~/Parse/) {
                  error++  
                  errorfile[$0] = $0
              }    
          }
          END{
              print "错误文件:" error "个"
              if(length(errorfile)>0) print "错误行数:"
                  for (i in errorfile)
                      print i
          }
      '
  else
      echo "php file not found."
      exit;
  fi
  使用,例如,代码如下:
 
  ./check_php_syntax /home/liuzhichao/test/
 
  输出:
 
  错误文件:2个
 
  错误行数:
 
  PHP Parse error:  syntax error, unexpected T_VARIABLE in /home/liuzhichao/test/awktest/a.php on line 3
 
  PHP Parse error:  syntax error, unexpected T_STRING, expecting ')' in /home/liuzhichao/test/levelcity.php on line 19

dawei

【声明】:石嘴山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。