Статьи

PATH_TRANSLATED блюз

Хотите знать, если кто-нибудь может предоставить некоторую помощь / советы по проблеме, с которой мы столкнулись в WACT ? Можно представить, что у других людей такая же проблема.

По сути, нам нужен способ определить тот путь скрипта, с которого началось выполнение из WACT.

Обычно при использовании WACT вы начинаете такой скрипт, как;


Затем код внутри WACT должен быть в состоянии определить, где myscript.php находится в файловой системе, чтобы, например, шаблоны пользователей могли быть расположены относительно пути myscript.php.

Это может показаться простой проблемой, решаемой простым использованием;


$myscript_path = dirname($_SERVER['SCRIPT_FILENAME']);

К сожалению, это работает только в некоторых конфигурациях PHP — когда PHP используется как исполняемый файл CGI (и, вероятно, то же самое для варианта CLI), содержит путь к исполняемому файлу PHP, а не сценарий PHP, с которого началось выполнение.

Альтернативный вариант, который, казалось, выглядел хорошо в течение короткого времени, был;


$myscript_path = dirname($_SERVER['PATH_TRANSLATED']);

Если посмотреть на список ошибок PHP, кажется, что с этой переменной возникли проблемы, связанные с используемой версией Apache. Хуже всего то, что он полностью удален из PHP5, упомянутого здесь .

Любые другие идеи о том, как надежно определить путь сценария, где началось выполнение? Начинаю задумываться, нужна ли PHP предопределенная константа, такая как __MAIN__, которая обрабатывает это независимо от установки PHP.

Джефф освещает проблему более подробно здесь .