在浏览器中模拟PHP的CLI

Vir*_*dia 8 php command-line-interface php-5.3

我正在考虑基于浏览器的PHP IDE的想法,并对通过浏览器模拟命令行的可能性感到好奇,但我不熟悉开发CLI的工具,以了解它是否可以完成很容易或根本没有.我想做更多的调查,但到目前为止还没有找到很多资源.

从高层次来看,我的第一直觉是设置一个文本输入,它将通过AJAX将命令提供给PHP脚本,并将任何输出返回到页面上.我对CLI不熟悉,知道如何在该上下文中与它进行交互.

我不需要实际的代码,虽然这也很有用,但我正在寻找更多我应该进一步调查的函数,类或API.理想情况下,我更喜欢融入PHP(假设PHP 5.3)而不是第三方库.你会如何解决这个问题?我应该知道任何资源或项目吗?

编辑:此用例将是本地主机或开发服务器,而不是面向公众的站点.

Tib*_*tan 2

通过 RPC 或来自 javascript 的直接 POST 调用此函数,它按以下顺序执行操作:

  • 将 PHP 代码写入文件夹(具有随机名称)中的文件(具有随机名称),它将单独放置在其中执行,然后在执行结束时被删除。
  • 当前的 PHP 进程不会运行该文件中的代码。相反,它必须具有执行权限(安全模式关闭)。exec('php -c /path/to/security_tight/php.ini')(参见 php -?)
  • 捕获任何输出并将其发送回浏览器。您可以免受任何奇怪错误的影响。我建议您不要使用 exec,popen这样您就可以终止该进程并手动控制等待其完成的超时(如果您终止该进程,您可以轻松地将错误发送回浏览器);

对于通过浏览器调用时运行的正常 PHP 进程,您需要宽松/正常的安全性(与整个 IDE 后端相同)。

您需要对运行临时脚本的 php.ini 和 php 进程进行严格且偏执的安全性(为了确定,甚至可以将其分离到另一台没有网络/互联网访问权限的计算机上,并且每小时将其状态恢复到工厂) 。

不要使用eval(),它不适合这种场景。攻击者可以跳入您的应用程序并使用您当前的权限和变量状态来攻击您。