Подскажите как лучше подключать фалы, а именно пусть к файлу

Jeysmook

Новичок
Подскажите как лучше подключать фалы, а именно пусть к файлу.
Вот такая вот конструкция работает хорошо дома, но не работает на сервере, можно ее как нибудь заменить, какой нибудь другой, чтобы работало на сервере?
PHP:
require_once($_SERVER['DOCUMENT_ROOT'].'/articles/');
Нужно чтобы файл подключался в любом каталоге. Спасибо.
 

С.

Продвинутый новичок
В статье приведено множество примеров.
 

Фанат

oncle terrible
Команда форума
но не работает на сервере
По-хорошему, с этакого сервера надо бежать без оглядки.
Если они такую малость не могут настроить, то там все в косяках.
можно ее как нибудь заменить, какой нибудь другой,
Нельзя. Во всех остальных случаях надо знать положение подключаемого файла относительно текущего.
 

doran7

Новичок
Вот он, пример.
из FAQ написал(а):
Константа __FILE__ содержит имя текущего исполняемого файла.
В отличие от PHP_SELF она содержит имя файла, исполяющегося в данный момент.
очень полезной представляется конструкция dirname(__FILE__), на которую желательно заменить все вызовы файлов, лежащих в том же каталоге, что и вызывающий скрипт. Например:
require dirname(__FILE__)."/init.php"
Через dirname(__FILE__) у меня пока все работало, при самых причудливых путях на хостингах.
 

Фанат

oncle terrible
Команда форума
Вот он, пример. Через dirname(__FILE__) у меня пока все работало, при самых причудливых путях на хостингах.
Дело не в путях на хостинге. А в путях самого приложения. к этой кривизне dirname(__FILE__) тебе надо ещё достраивать точечки и палочки относительного пути к подключаемому файлу.
И не дай бог тебе поменять структуру файлов в приложении.
 

doran7

Новичок
Спору нет, достраивать пути надо. Но, например, берем дистрибутив того же движка FluxBB (где пути прописаны через dirname(__FILE__)), ставим на любой хостинг - и все работает. А вот если те же пути прописать через $_SERVER['DOCUMENT_ROOT'] - я не уверен, что всегда будет работать.
 

Hello

Новичок
doran7
$_SERVER['DOCUMENT_ROOT'] и dirname(__FILE__) (почему не __DIR__?) никак друг с другом не связаны.
 

Фанат

oncle terrible
Команда форума
Чота меня опять мизантропия накрывает...
ставим на любой хостинг - и все работает.
Относительные пути можно писать и без идиотского dirname(__FILE__).
Это волшебное заклинание, которое бубнят ламеры всего мира, не синоним понятия "подключить файл по правильному пути", а костыль, нужный беспомощным незнайкам, которые не могут сообразить положение файла относительно текущей директории.
Но по сути это тот же самый относительный путь. Со всеми вытекающими.

И если один идиотский форум с этим работает, то это не повод пихать как рекомендацию всем подряд.
Убери, кстати, его из подписи. еще не хватало этот хлам здесь рекламировать.
 

ksnk

прохожий
fixxxer mod_vhost_alias, скорее, инструмент девелоперский. Когда нужно состряпать реплику сайта с немного другим окружением, а все-все-все утаскивать на новое место по каким-то причинам нельзя. Так что вменяемый хостер такими вещами, imho, не балуется и всех девелоперов посылает девелопиться куда подальше.

Так что либо TC размещается на нормальном хостере в неожиданном для приложения каталоге, либо у сумашедших девелоперов на тестовом хостинге. Тут уже нужно разбираться в причинах, по которым размещаемся именно там. Вероятно, ТЗ и прочие рогатки не дадут так просто слинять с такого хостинга ;) .

Куда подевался топикстартер? Я за него волнуюсь...
 

Вурдалак

Продвинутый новичок
Фанат, воу, воу, палехче. __DIR__ как раз-таки даст путь, который будет правильный в любом контексте, а простой относительный будет неправильный, если запустить php path/to/script из другой директории. Разницы с $_SERVER['DOCUMENT_ROOT'] нет никакой, ибо у белых людей в $document_root скриптов, кроме, вероятно, index.php, нет, поэтому опять вылезут неприятные тебе точечки.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Вурдалак, думаю, Фанат говорит о том, что __DIR__ и документ_рут это ВООБЩЕ разные вещи, которые в определенном раскладе могут указывать на одну и ту же папку в файловой системе. Что не отменяет того факта, что абсолютные пути отрабатываются чуть быстрее, чем относительные, да и кешируются самим похаэпе.
 

Gas

может по одной?
я может и старовер, но тоже страхуюсь и делаю где-то в index.php chdir(__DIR__.'/../') и спокойно относительные пути использую, чтоб не гадать как там сервер настроен, что он текущей директорией считает.
 

ksnk

прохожий
О чем вообще разговор тут идет? В нормальном, imho, приложении include и прочие радости не используются вообще нигде, за исключением автолода. Автолод - это такой единственный файл системы, который обязан уметь находить где что лежит, и который не грех и вручную настроить, если планируется переезд в странно-необычные места с жесткими ссылками и алиасами на месте файлов-каталогов
Где еще можно использовать пути? хоть абсолютные, хоть относительные? При построении ссылок на загруженные документы и работе с изображениями?
 

Вурдалак

Продвинутый новичок
Вурдалак, думаю, Фанат говорит о том, что __DIR__ и документ_рут это ВООБЩЕ разные вещи
Я лишь вижу, что Фанат ругает одно:
А в путях самого приложения. к этой кривизне dirname(__FILE__) тебе надо ещё достраивать точечки и палочки относительного пути к подключаемому файлу.
А другое предподносит как единственно верное решение:
> можно ее как нибудь заменить
Нельзя. Во всех остальных случаях надо знать положение подключаемого файла относительно текущего.
Это лишь вызывает недоумение у людей, которые не пихают код в htdocs/www/public.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
я может и старовер, но тоже страхуюсь и делаю где-то в index.php chdir(__DIR__.'/../') и спокойно относительные пути использую, чтоб не гадать как там сервер настроен, что он текущей директорией считает.
и исключительно теоретически, если по нужному пути не окажется какого-нибудь твоего запрошенного файла, а по одному из путей в include_path он окажется... то все твои конфиги можно будет из чужого файла прочитать. :)
 
Сверху