我在 /var/www/site1 和 /var/www/site2 文件夹中有虚拟主机。我想限制对 apache 虚拟主机中文档根目录之外的文件的访问,即 site1 无法访问 site2 的文件。
目前,/var/www/site1 中的脚本运行正常,但这并不好:
$filename = "/var/www/site2/somefile";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
echo $contents;
请问如何解决这个问题?
非常感谢!
答案1
这个问题比你最初想象的要棘手一些。问题是,一旦你运行了脚本,那么该脚本就会执行操作系统允许的任何操作。该脚本将由与 Apache Web 服务器相同的用户运行,并且 Web 服务器必须能够读取这两个目录才能为其提供网页。
因此,为了让你的脚本无法看到其他目录,你需要以其他用户的身份运行它,而不是以网络服务器的身份运行。你可以使用以下命令执行此操作执行,当然您需要小心设置它,否则可能会产生安全问题。