PHP只能在特定的文件夹中工作吗


Can PHP be restricted to work in certain folder only?

我几乎可以肯定PHP总是能够访问服务器上的任何地方,并对任何文件执行任何操作,但我想知道是否有办法限制它只能在一个文件夹中工作,以及有什么要求?

我的意思是,我有50个WordPress安装,50个文件夹。如果来自不受信任插件的病毒只影响一个安装,它也会立即转移到49个其他安装(因为PHP可以扫描服务器上的所有目录)。

有什么办法可以防止这种情况发生吗?如果病毒侵入WordPress的1个安装-我希望它只留在那里。

我的主机提供商说,如果不购买另一台服务器,这是不可能的。你的意见是什么?

使用php-fpm,您可以chroot php工作程序(用于绝对分离),并为每个php应用程序提供自己的用户和php配置(超时、内存限制等)。您不必使用chroot来拥有唯一的用户。通过简单的文件权限,你可以让任何人都无法读取webroot,而不是该webroot的专用用户。此外,这并不是Apache特有的,它适用于任何其他支持fastcgi的Web服务器。

一种更容易设置的方法可以是在php的open_basedir上中继(由于php的开发人员经常修复与此功能相关的错误,因此open_basedir的安全性存在争议)

您可以在FastCGI模式下安装suEXEC并运行PHP。使用此配置,您可以在不同的用户下运行PHP实例。

我自己没有尝试过这个教程,但它对我来说很好:如何在Debian 上使用suEXEC设置PHP FastCGI