Как установить условие для директив .htaccess

Я настроил .htaccess файл для добавления PHP ошибки в лог-файл:

php_flag  log_errors on
php_value error_log  /home/user_id/public_html/PHP_errors.php
php_value error_reporting 6143

и работает нормально на удаленном сервере (linux). Но указанный выше путь не существует на локальном сервере (windows). Я старался:

php_value error_log  ./PHP_errors.php

И это работает в локальном, но это не работает на удаленном сервере.

Можно ли ограничить вышеперечисленные направления для удаленного сервера? Что-то вроде:

Condition %{http_host} ^example.com$
php_value error_log  /home/user_id/public_html/PHP_errors.php

Condition %{http_host} ^localhost$
php_value error_log  ./PHP_errors.php

(У меня нет доступа к файлу php.ini на удаленном сервере, но, конечно, я могу изменить его на локальном)

1

Решение

Используя Apache 2.4, вы можете использовать этот условный фрагмент:

<If "%{HTTP_HOST} =~ m#^(www\.)?example\.com$#">
php_value error_log  /home/user_id/public_html/PHP_errors.php
</If>

<If "%{HTTP_HOST} =~ m#localhost#">
php_value error_log ./PHP_errors.php
</If>
1

Другие решения

Вы можете контролировать это из PHP. Таким образом, у вас может быть файл конфигурации на PHP, который включается при запуске приложения и устанавливает error_log () и error_reporting ().

Затем у вас может быть несколько версий этого файла в зависимости от вашей среды (локальная или удаленная) или вы можете проверить переменную $ _SERVER, чтобы установить правильные пути.

0

Здесь похожий вопрос с хорошим ответом: https://stackoverflow.com/a/4139899/5550193

Кроме того, вы можете не захотеть давать вашему файлу журнала расширение .php как это открывает для некоторых потенциальных подвигов. Лучше назови это .log или что-то еще, что не может быть отправлено переводчику Apache.

0
По вопросам рекламы [email protected]