从源文件通过PHP运行java并保存输出

时间:2016-01-12 11:13:33

标签: java php exec

我正在开发一个在线编码竞赛应用程序。在此我希望提交的代码被编译和执行。如果提交的代码是Java,我可以使用exec(javac文件名)编译它。

但是我应该如何运行该代码,以便从文件中获取输入并将输出重定向到另一个文件?检查各种测试用例代码的任何其他方法也很有用。

exec('java ./$path > ./$dest')

这是我用来执行的,但它无法正常工作。

1 个答案:

答案 0 :(得分:0)

你已经搞乱了字符串插值,所以你应该使用:

$path = "path/to/java/file.java";
$dest = "path/to/output.o";
exec("java ./{$path} > ./{$dest}")

但它缺乏一些基本的安全考虑因素。

除非您希望足够聪明的用户在您的计算机上执行他喜欢的任何代码,否则请记住:

运行用户提交的java代码肯定需要一些沙盒。

exec很危险。考虑执行rm -rf ~的java文件中的系统调用。我敢打赌,stuff like this有一些java或php替代品,可以在一个或多或少安全的环境中执行它。

另外,如果我通过$dest = '../../some/evil/path/file.o',那么该文件将位于您不希望它的目录中(但我认为它设置这些路径并不是那么重要)。