Мой хост дает мне две папки для использования: /home/public/
куда идут страницы, и /home/private/
, который предназначен для моего личного использования. Я хотел бы, чтобы PHP создал файл, который мог бы читать я с машины, но не кто-либо другой через Интернет. Эту проблему вызывает размещение файла в общей папке. Я думал о том, чтобы сделать файл принадлежащим группе apache, но я не являюсь ее членом. Было бы неплохо, если бы я мог поместить файл в свой личный каталог, но понятно, что я получаю ошибку доступа при попытке записи в файл в нем. Что мне делать?
Для многих пакетов требуются подкаталоги, доступные для программ / сценариев, в html или публичной иерархии.
Поскольку вы (я полагаю) работаете в общей службе с использованием suPHP или эквивалента, скрипты будут запускаться только в UID владельца, поэтому это недоступно. Я принял очень простое соглашение: если имя любого файла или папки начинается с _ или. тогда доступ через URI запрещен. Это простое правило, которое я помещаю в любой .htaccess
файл с
SetEnvIf Request_URI "(^_|/_|^\.|/\.)" forbidden
<Files *>
Order allow,deny
Allow from all
Deny from env=forbidden
</Files>
Другой способ сделать это - использовать RewriteRule:
RewriteRule (^_|/_|^\.|/\.) - [forbidden]
Это имеет то преимущество, что вы можете принять это чрезвычайно простое соглашение для любых каталогов include или данных, к которым вы, возможно, захотите получить доступ в своих сценариях, но сделайте это. не хотите, чтобы их можно было просматривать через URI.
Я немного смущен вашим утверждением:
Было бы неплохо, если бы я мог поместить файл в свой личный каталог, но понятно, что я получаю ошибку доступа при попытке записи в файл в нем.
Это одна из тех забав, где UID поставщика услуг принадлежит / home / private /, а у вас есть доступ только для чтения через свой GID? Мой интернет-провайдер делает то же самое для сброса файлов журналов. Я могу читать, но не могу писать или удалять. Вот почему я использую /public/_private
. Простите за оксюморон.