如何将PHP代码限制到特定文件夹?

时间:2015-06-26 14:51:32

标签: php directory limit

我正在为我的学生设置一个网络服务器来试用他们的PHP代码。 在网络服务器上,我将为每个学生提供一个文件夹,我不想要学生上传到他们文件夹的代码来更改/读取/执行学生文件夹之外的文件。

在没有为每个学生设置VPS的情况下,有没有解决这个问题?

2 个答案:

答案 0 :(得分:2)

Marc B提出了一个chroot监狱 - 但是像VPS一样,这实际上需要为每个学生运行至少单独的FPM池。

更简单的解决方案是使用open_basedir功能将脚本约束到自己的目录树。您可以在每个目录的基础上在webserver配置中启用它 - 但我认为没有一种简单的方法来映射mod_userdir计算的路径,即您需要大量的

 <Directory "/home/Gurgy/public_html">
    php_admin_value open_basedir "/home/Gurgy/"
 </Directory>

 <Directory "/home/MarcB/public_html">
    php_admin_value open_basedir "/home/MarcB/"
 </Directory>

 ...

(这可能值得在Serverfault上进一步提出问题,看看是否有人知道解决这个更具体问题的更好方法。)

有一些漏洞允许您访问open_basedir限制之外的文件。符号链接错误是固定的,但不确定IMAP漏洞。最好使用最新的补丁版本的PHP与Suhosin,并做进一步的研究。

话虽如此 - 除非它是一个非常短的课程,你可能想要为他们提供一个虚拟机映像,然后他们可以用它来探索服务提供的其他方面。

答案 1 :(得分:0)

that您要找的是什么?如果是,则为php.ini设置。为了将它放入每个虚拟主机部分的Web服务器配置中,我们需要知道:

  1. 你使用什么网络服务器
  2. 如何为每个学生配置虚拟主机
  3. 如果每个学生都有单独的配置和虚拟主机,请考虑添加

    php_admin_value open_basedir "/path/to/this/student/folder"
    

    到virthost配置