我尝试在应用程序中构建一个审计特性,以检查各种代码质量问题。
我想做的一件事是检查某些PHP文件的语法错误。我本来打算使用php_check_syntax(),但它在PHP 5.0.5中被删除了。
我试过使用exec()
语句,但它没有输出任何东西。我添加了一个date
来确保exec()
工作正常:
<?php
error_reporting(E_ALL | E_NOTICE | E_STRICT | E_WARNING);
ini_set('display_errors', 1);
$output = 'before';
var_dump($output);
var_dump(exec('php -l ' . __FILE__, $output));
var_dump($output);
var_dump(exec('date', $output));
var_dump($output);
输出:
string 'before' (length=6)
string '' (length=0)
array (size=0)
empty
string 'Thu Feb 6 10:42:35 PST 2014' (length=28)
array (size=1)
0 => string 'Thu Feb 6 10:42:35 PST 2014' (length=28)
如何检查PHP文件中的语法错误?
4条答案
按热度按时间qf9go6mv1#
检查web-服务器配置. places like this:disable_functions="".在var_dump($output)开始返回一个数组检查,检查数组中的错误,以消除更多的错误,如php的正确路径。
使用此选项可消除某些其他可能性:
p.s.可用于
更新:更新的问题显示exec工作。它可能是你的 *nix类平台隐藏错误输出。一种方法来重定向它添加到命令2〉&1它将重定向错误输出到标准输出
如果您拥有该平台的root访问权限,您甚至可以使用strace等工具来调试一些复杂的情况。
变量转储(exec('php-l ' .文件.' 2〉&1',$输出));//unix平台的错误重定向
j0pj023g2#
要检查多个php文件,可以将以下代码保存为批处理文件并执行:
在php文件目录中将其保存为“check.bat”(例如)并执行它。
sgtfey8w3#
您可以在命令行中使用
-l
参数通过运行PHP的lint来完成此操作:test.php
**:结果:
结果:
ua4mk5z44#
下面是一个Unix bash脚本,你可以用它来对文件夹和子文件夹中的所有. php文件进行语法检查:
来源:https://gist.github.com/Fake51/865603