У меня есть виртуальные хосты в папках / 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;
Как решить эту проблему?
Большое спасибо!
Это немного сложнее, чем вы думаете вначале. Проблема в том, что как только вы запускаете сценарий, он будет делать все, что ему разрешено операционной системой. Сценарий будет запускаться тем же пользователем, что и веб-сервер apache, и веб-сервер должен иметь возможность читать оба каталога, чтобы обслуживать для него веб-страницы.
Итак, чтобы ваш скрипт не мог видеть другие каталоги, вам нужно будет запустить его от имени другого пользователя, а не веб-сервера. Вы можете сделать это, используя suexec, хотя, конечно, вам нужно быть осторожным с его настройкой, иначе вы можете создать проблемы с безопасностью.