我正在尝试用 PHP 编写一个网站,允许用户输入 PHP 代码,然后能够在我的服务器上运行它。但是,我希望能够禁用某些功能(文件访问、数据库访问等)。基本上,我希望代码运行时对我的服务器没有任何风险,如果代码确实试图做一些危险的事情,我只是希望代码停止运行(我不介意它是否只是停止、产生错误或在忽略危险代码的情况下继续进行)。
这是可能的,如果是这样,我怎么能做到这一点?谢谢 :)
可以使用执行一些简单检查或限制的库。
查看名为 RunKit_Sandbox http://php.net/manual/en/runkit.sandbox.php或 PHPSandbox 的 PECL(PHP 扩展)扩展。
在 Google 上寻找的关键是 PHP Sandbox,它会为您找到类似的库。
然后找到disable_functions,随意禁用功能!像这样: disable_functions = exec,passthru,popen,proc_open,shell_exec,system,phpinfo,assert,chroot,getcwd,scandir,delete,rmdir,rename,chgrp,chmod,chown,copy,mkdir,file,file_get_contents,fputs,fwrite ,目录
实际上,我专门为这些用例开发了一个包。它可以完全配置,甚至可以用来覆盖危险的函数和全局变量。