Всем доброго времени суток! У меня проблема следующего характера: Имеется некоторый скрипт РНР, на который со всех страниц разной вложенности подключается функция include Раньше использовал подключение в страницах, такого вида: В одной странице так include "http://мой сайт/какая-то папка/сам скрипт.php"; В другой так include "http://мой сайт/какая-то папка/какая-то папка/сам скрипт.php"; и так далее,(понимаю теперь, что это совсем не "вариант"!) особенно при переносе сайта, на новый адрес. Скрипт, везде один и тот же. Прошу совет! Как лучше прописывать адрес к файлам, находящимся в корне сайта, но в разных папках? Стал про это читать и совсем окончательно запутался. В голове полная каша. Одни пишут, что надо указывать путь, используя переменную $_SERVER['DOCUMENT_ROOT'] Другие, оспаривая первый вариант, предлагают использовать dirname(__FILE__) Я пока, вообще не вижу никакой разницы. Хотелось бы узнать мнение профессионалов, как поступить в данном случае. Буду ждать Ваших советов!
Да в принципе оба варианта, я думаю, тебе подойдут в большинстве случаев. Я всегда использую dirname(__FILE__); Просто если нужно будет запустить скрипт не через веб-сервер (например, кроном) - то массива $_SERVER в нём не будет.
Хорошо, вроде за dirname(__FILE__); , положительных отзывов больше! Но у меня все равно, какая то проблема,с этими путями. Вот пример проблемы: В некоторой странице инклюдим скрипт <?php include dirname(__FILE__)."какая то папка/какая то папка/скрипт.php";/*подключаем скрипт*/ ?> На сам скрипт инклюд идет хорошо, то есть скрипт запускается,но в скрипте есть такое место <? include "run.php"; ?> проходит он в этот run.php а там есть такая строка $lin=file("base.dat"); как доходит до этого места, происходит ошибка и скрипт не выполняется. Пишет, Warning file(base.dat): failed to open stream: No such file or directory in /home/i/sayte.ru/WWW/papka/run.php файл run.php находится в одной папке с самим скриптом. Так же и файл base.dat то же в одной папке. Но почему он не может его найти не понятно! Кстати, если к скрипту подключится,через протокол httpто есть в инклюд страницы, с которой происходит переход к самому скрипту, указать виртуальный адрес скрипта, то все работает замечательно. Просто как я и писал, что везде указывать интернет адрес мне не хочется. Вдруг придется переехать, не менять же потом везде эти подключения.
С моей точки зрения самое надёжное - везде прописывать абсолютный путь к файлу. Т.е. как-то так: PHP: <?php // ... $path = dirname(__FILE__); include($path . DIRECTORY_SEPARATOR . 'run.php'); // ... ?> run.php: PHP: <?php // ... $lin = file($path . DIRECTORY_SEPARATOR . 'base.dat'); // ... ?> Пример выше - это если все три файла находятся в одном каталоге. В другом случае нужно будет указывать соответствующий путь.