我正在设计一个web应用程序,它从服务器上传代码并在上面运行cppcheck。我尝试使用exec($command,$output,$status);
命令命令为"cppcheck ". $filename;
返回的$output数组只包含第一行,即:
正在检查文件.cpp.
线路
"(错误)在索引10处访问数组"a[10]',这超出了界限。"
显示在httpserver的error.log文件中。它实际上不是命令行错误或php错误,而是cppcheck产生的错误。是因为字符串包含"error",所以它会进入error.log吗?我该如何解决这个问题?
正如@arkascha正确指出的那样,cppcheck的输出必须从stderr流重定向到stdout。
根据手册第2.7章:
很多时候,您会希望将结果保存在一个文件中。可以对管道使用常规壳重定向错误输出到文件。
cppcheck file1.c 2> err.txt
你的电话会是
exec($command.' 2>&1', $output, $status);