2011-01-11 2 views
0

У меня есть файл для обработки платежей моего сайта. Он работает очень хорошо, но мне хотелось бы записать все запросы на эту страницу, чтобы, если что-то выдает ошибку, необработанные данные сохраняются, и я могу обрабатывать транзакцию вручную. В файле обработки используется fopen для записи в файл журнала в другом каталоге.Пользовательский файл журнала с правильными разрешениями

Теперь у меня есть отдельная папка в корневом каталоге с разрешениями 755. Затем файл журнала внутри с разрешениями 777. Файл обработки, который записывает в файл журнала, в PHP, если это имеет значение, имеет значение 777 .

Это работает прямо сейчас, но файл журнала является общедоступным. Я знаю, что я могу сделать это лучше и что разрешения не верны. Как я могу сделать это лучше?

ответ

1

Поместите файл журнала за пределы корня документа. Сценарий PHP, который пишет ему, все равно сможет добраться до него (через полный путь), но Apache не сможет его обслуживать.

+0

Это не ответ о разрешениях – vladkras

0

Я наткнулся на это, ища ответ для себя. Я не верю, что существует простое «исправление прав» для выполнения того, что вы хотите, и, возможно, самым безопасным способом является размещение файлов журнала вне каталога public_html.

Однако это может быть неприятно иногда - особенно если вы хотите, например, catch paypal ipn dump text в файле журнала, но не имеет общедоступного доступа.

В таких случаях вы можете использовать директивы файла .htaccess, чтобы разрешить запись из сценария, но запретить чтение из общедоступного доступа.

Например, это работает для меня (Apache .htaccess в корневой папке public_html);

<FilesMatch "mycustom\.log"> 
    Order allow,deny 
    Deny from all 
</FilesMatch> 

и если у вас есть несколько журналов, которые вы хотите защитить, используйте его так: «Разделите трубку»;

<FilesMatch "mycustom\.log|ipn_errors\.log"> 
    Order allow,deny 
    Deny from all 
</FilesMatch> 

Стоит отметить, что приведенные выше директивы устаревшим апача 2.4 и вы можете рассмотреть возможность использования более текущих директив вместо: https://httpd.apache.org/docs/2.4/howto/access.html

Надежда, что помогает!