如何在线编译代码?

时间:2011-09-17 22:38:17

标签: php compiler-construction

如何构建像http://ideone.com/这样可以编译/运行40种不同语言的网站?我不需要40语言支持,但希望能够在个人的pastebin项目上运行PHP和其他几个人,对于如何实现这一点有任何帮助

3 个答案:

答案 0 :(得分:4)

在php的情况下,一个有趣的  要做的事情可能是:

  1. 获取emscripten
  2. 将php解释器编译为LLVM字节码
  3. 从LLVM字节码生成javascript
  4. 通过闭包编译器运行它以提高效率
  5. 直接从浏览器调用javascript

  6. PROFIT

  7. 这样,用户就不会生成任何服务器负载(因为它都在浏览器中),并且 no 更少安全隐患。

    大声思考

答案 1 :(得分:3)

你需要收集用户输入的内容,将其保存到文件或管道到相应的编译器。 php可以execute任何内容,只要你的服务器上有工具就可以了。

答案 2 :(得分:3)

对于编译语言,您必须编写一些内容来调用位于Web服务器上的[可能的命令行]编译器,并为其提供用户输入源。对于PHP,您可以使用eval()执行代码,但是调用PHP解释器可能更安全(当然也更便于移植)。

当然,执行任意用户输入源代码会带来严重的安全风险,所以我想http://ideone.com/会在某种沙箱中执行生成的二进制文件。

除非您将Web服务器配置为严格限制PHP,并且使用某种第三方库(不要重新发明轮子)来识别恶意代码,否则我不建议在用户输入上使用eval()