У меня есть сервер, использующий сервер ubuntu, с apache2 и php.
Я хочу создать каталог с файлом php, который виден в Интернете, и внутри него каталог, который является частным, и никто (apache) не имеет к нему доступа, кроме этого файла php.
как я могу это сделать?
Если вы можете организовать выполнение PHP от имени другого пользователя из простого Apache, это будет легко: вы устанавливаете личный каталог как принадлежащий пользователю PHP и разрешениям 700.
В качестве альтернативы, если интерпретатор PHP должен запускаться от имени того же пользователя, что и сервер Apache (как обычно), вы можно использовать директивы конфигурации Apache (в файле .htaccess
или иначе), чтобы указать, что Apache никогда не должен обслуживать что-либо из этого каталога. Вот как это сделать в «основных» файлах конфигурации Apache:
<Directory "/your/private/directory">
Require all denied
</Directory>
В файле .htaccess
просто используйте отдельную строку Require
:
Require all denied
Это будет автоматически применить к каталогу, в котором находится файл .htaccess
.
Интерпретатор PHP может получить доступ к файловой системе, минуя Apache, и поэтому он сможет получить доступ к закрытому каталогу. Затем вы просто устанавливаете личный каталог как принадлежащий пользователю службы Apache и с разрешениями 700.