Вопрос определения папки, в которой находится файл со скриптом вроде как простой, но иногда можно столкнуться со сложностями.
Для определения нахождения скрипта используется массив $_SERVER. Про элемент $_SERVER[‘HTTP_HOST’] в справочнике написано, что он определяет “Содержимое заголовка Host: из текущего запроса, если он есть”.
Если наш скрипт находится на локальном сервере по адресу http://myexamples/, то элемент $_SERVER[‘HTTP_HOST’] содержит значение myexamples. Если же скрипт находится по адресу http://myexamples/files/, то значение будет тем же. И если нам нужен абсолютный путь, и мы для его определения использует этот элемент, то нас переадресует в несуществующее место.
Собственно, с подобной ошибкой мне пришлось столкнуться, тестируя простой пример паттерна MVC, который был помещен не просто в папку domains локального сервера, а в подпапку, и при попытке открытия выдавал несуществующую страницу, а при попытке перехода на главную страницу переходил на localhost. Конечно, лучше размещать такие примеры на отдельном домене, тем более, если на скелет этого примера предполагается наращивать плоть.
Тем не менее узнать, в какой папке находится скрипт, можно. Для этого надо воспользоваться элементом массива $_SERVER[‘REQUEST_URI’]. Для скрипта по адресу http://myexamples/files/ он содержит /files/. Это при условии, что файл называется index.php. Если его переименовать, например, в index1.php, то значение будет /files/index1.php. Тогда надо убрать название файла с последним слэшем и получится название папки.