php -l:抑制有效文件的输出

时间:2015-12-11 00:22:58

标签: php phplint

使用php -l myFile.php命令(PHP 5.5.30)时,如果文件有语法错误,那么我会得到正确的警告和堆栈跟踪等。

但是,如果文件没有语法警告,我会收到消息

  

myFile.php中未检测到语法错误

当语法有效时,有没有办法让命令没有输出?我只关心文件是否有无效的语法 - 我不需要一条消息说它有效。

4 个答案:

答案 0 :(得分:5)

"没有语法错误......"在stdout上发送语法错误时,会在stderr上发送消息。如果您不想要它们,可以将它们重定向到/dev/null之类的地方。

php -l file.php 1> /dev/null
如果有任何错误或没有错误,

将输出错误。你确实失去了解析错误......"消息,但如果出现问题则会收到错误。

答案 1 :(得分:1)

不要检查输出,检查返回码。

$ php -l good.php &> /dev/null; echo $?
0

$ php -l bad.php &> /dev/null; echo $?
255

所以:

if ! php -l somescript.php &> /dev/null; then
  echo 'OH NOES!'
fi

或者,如果您感觉自己喜欢:

if ! foo=$(php -l somescript.php 2>&1); then
  echo $foo
fi

答案 2 :(得分:1)

如果命令成功(返回0),您可以使用chronic来禁止所有输出:

chronic php -l myFile.php
  

描述

     

chronic运行命令,并安排其标准输出和标准错误仅在命令失败时显示(退出非零或崩溃)。如果命令成功,将隐藏任何无关的输出。

在Debian上,它位于moreutils包中。

答案 3 :(得分:0)

php -ln script.php >/dev/null || php -ln script.php

编辑:

chronic php -ln script.php