【问题标题】:Running java through PHP from source file and save output从源文件通过PHP运行java并保存输出
【发布时间】:2016-01-12 11:13:33
【问题描述】:

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

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

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

这是我用来执行的,但它不起作用。

【问题讨论】:

    标签: java php exec


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多