Php 需要一种安全的方式来执行外部代码

Php 需要一种安全的方式来执行外部代码,php,Php,我想知道是否有可能允许人们在我的网站上编写和执行PHP代码,而不使用“eval”,因为存在风险。 我在谷歌搜索了一下,确实找到了一些答案,只是没有找到我想要的答案(call_user_func)。 这不是我想要的,因为它不允许人们运行完整的PHP脚本 它是由一小群人执行的,所以服务器负载不会成为问题 编辑1:用户不能修改/删除文件; 用户应该能够创建完整的脚本。; 用户应该能够运行html代码,但一旦使用php标记,就会触发php。您可以围绕php编写自己的包装进程,使用ptrace控制子php

我想知道是否有可能允许人们在我的网站上编写和执行PHP代码,而不使用“eval”,因为存在风险。 我在谷歌搜索了一下,确实找到了一些答案,只是没有找到我想要的答案(call_user_func)。 这不是我想要的,因为它不允许人们运行完整的PHP脚本

它是由一小群人执行的,所以服务器负载不会成为问题

编辑1:用户不能修改/删除文件; 用户应该能够创建完整的脚本。;
用户应该能够运行html代码,但一旦使用php标记,就会触发php。

您可以围绕php编写自己的包装进程,使用
ptrace
控制子php进程的执行,以防止其打开文件句柄、连接到网络等


这样,即使人们决定尝试在eval中使用恶意代码,系统调用也会在本机级别被阻止。

eval的风险是任意代码。如果您不担心或不担心运行可能存在危险的脚本,
eval
就可以了。或者有哪些白名单可以接受代码。定义“安全”。此工具需要安全防范什么-需要抵御蓄意恶意使用吗?它必须是安全的,如,无法删除文件或损坏任何编辑:人们需要能够创建一个完整的php脚本,而不仅仅是一个函数。Ptrace是一个linux命令?您可以使用Ptrace、fork和execv的组合在php进程周围编写一个本机包装器,以便在安全的环境中启动php进程。也许你会用C语言或其他母语写这篇文章。我稍后会检查一下,对其他语言不太熟悉:)这是一个有用的答案。试图在语言级别解决问题是错误的。同意,我可能最终会创建一个虚拟机来运行代码