У меня странная проблема, для которой я не могу найти документацию. У меня есть страница в следующем месте на моем сервере.
{SITE_ROOT}/admin/myfolder/myfile.php
Этот файл использует include для запуска файла глобальной конфигурации, который находится в корне сервера - он делает это относительно себя
// {SITE_ROOT}/admin/myfolder/myfile.php
// includes {SITE_ROOT}/config.php See below explanation after edit
include('../config.php);
Это прекрасно работает, пока я не добавлю следующий файл .htaccess в каталог myfolder
// {SITE_ROOT}/admin/myfolder/.htaccess
RewriteEngine On
RewriteRule ^([0-9A-Z]+)\.gif$ gif_generator.php?gifid=$1 [L]
Цель этого правила не важна - дело в том, что это правило не должно затрагивать приведенную выше страницу (myfile.php) (оно не должно соответствовать регулярному выражению, если я не ошибаюсь - и я мог бы хорошо быть). Тем не менее, кажется, что когда используется это правило, include () внутри myfile.php завершается ошибкой. Это похоже на то, что текущий рабочий каталог php-файла изменяется благодаря включенному RewriteEngine.
Это где-нибудь задокументировано и есть ли способ предотвратить это?
edit - Я пропустил что-то довольно важное. Исходный файл ({SITE_ROOT} /admin/myfolder/myfile.php) сам по себе включается файлом в следующем месте ({SITE_ROOT} /admin/frontcontroller.php). Путь включения в myfile.php фактически относится к этому файлу. Я изменил вышеуказанный вопрос, чтобы отразить это.