Решение - создать переменную basepath. Лучший способ сделать это - включить следующее в начало вашего скрипта, а затем сослаться на него
$basepath = dirname(dirname($_SERVER['SCRIPT_FILENAME'])).DIRECTORY_SEPARATOR;
Затем вы можете ссылаться на базовый путь в ваших включениях, требованиях и т. Д. Следовательно,
include "../myscript.php";
станет,
include $basepath."myscript.php";
Если вы вернетесь дальше, у вас будет следующее:
include "../../myscript.php";
станет,
include $basepath."../myscript.php";
Вы должны вложить функции dir_name дважды, плюс еще один раз для каждой дополнительной папки, через которую вы хотите вернуться назад. Вы ДОЛЖНЫ пройти весь путь до папки, где существует символическая ссылка.
Я считаю эту проблему серьезным недостатком дизайна в PHP. Я не могу вспомнить ни одного случая, когда был бы желателен доступ к файлам с обратными ссылками относительно реального файла. Во всех ситуациях, включая виртуальный хостинг, имеет смысл возвращаться назад только по связанному пути, а не по целевому пути.