Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 08:19   #1
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию Проблема с include и абсолютными путями

При указании абсолютного пути выдается ошибка
Warning: include(Z:/home/localhost/www/administrator/index.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\www\NeoGen\index. php on line 3

Warning: include() [function.include]: Failed opening 'Z:/home/localhost/www/administrator/index.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\localhost\www\NeoGen\index. php on line 3
administrator

Хотя файлы там есть! В чем проблема может заключатся? может как то нужно разрешить в php использование абсолютных путей в include?
Если да то как пожалуйста объясните? желательно чтобы разрешить через
.htaccess.
BarakudaX777 вне форума Ответить с цитированием
Старый 13.09.2012, 08:26   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

зачем использовать абсолютные пути?
ADSoft вне форума Ответить с цитированием
Старый 13.09.2012, 08:31   #3
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
Лампочка

Цитата:
Сообщение от ADSoft Посмотреть сообщение
зачем использовать абсолютные пути?
Дело в том что ипользование относительных путей приводит к тому, что система сама достраивает относительный путь до абсолютного, проверяет на его наличие и доступность а затем открывает, поэтому многие утверждают что ипользование абсолютных путей избавляет сервер от лишних рутинных операций.
Было бы не так важно если бы в моем проекте не было так много include вложений. Просто пишу CMS систему, поэтому подключений будет множество.

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

Пишу так к примеру include ($_SERVER['DOCUMENT_ROOT']."/index.php");
Выдается ошибка, её я описал выше
BarakudaX777 вне форума Ответить с цитированием
Старый 13.09.2012, 08:44   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

1. ерунда на постном маргарине
2. уменьшайте инклюды
3. не используйте абс. пути. представьте делаете другой сайт - что все пути переписывать, менять? не везде можно использовать абс путь в следствии ограничения хостом доступа тока в корень сайта, а ниже - ни-ни
ADSoft вне форума Ответить с цитированием
Старый 13.09.2012, 08:51   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Код:
include ($_SERVER['DOCUMENT_ROOT']."/index.php");
это правильный шаг
ADSoft вне форума Ответить с цитированием
Старый 13.09.2012, 08:51   #6
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Абсолютный путь тоже можно привести к более менее относительному используя define так что менять и не придется многое!
К примеру define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT']);
а использовать так include(ROOT_DIR.'/include.php')

Ошибка я понял в чем. почему то $_SERVER['DOCUMENT_ROOT'] вернул каталог без корневой папки Neogen. Думаю лучше вместо него использовать dirname(__FILE__) или указав параметром обсалютный путь к корневому файлу index.php, получив до него абсолютный путь
BarakudaX777 вне форума Ответить с цитированием
Старый 13.09.2012, 08:58   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

так тоже можно
ADSoft вне форума Ответить с цитированием
Старый 13.09.2012, 08:59   #8
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Хотя так не пройдет там абсолютный путь как параметр должен быть.. ну и ладно =) проблема закрыта. один раз думаю можно прописать
Код:
define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT'].'/neogen/');
Потом если что менять придется так только одну предопределенную константу.
Вопрос закрыт =) Всем спасибо.
BarakudaX777 вне форума Ответить с цитированием
Старый 13.09.2012, 11:12   #9
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Дело в том что ипользование относительных путей приводит к тому, что система сама достраивает относительный путь до абсолютного, проверяет на его наличие и доступность а затем открывает, поэтому многие утверждают что ипользование абсолютных путей избавляет сервер от лишних рутинных операций.
Только при первом запуске, затем ОС (или опкэшер) начинает кэшировать эти файлы и работает это максимально быстро.
Забейте, абсолютные пути нужны, если у Вас инициализируются тысячи файлов.
Виталий Желтяков вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с путями при создании инсталлера DartLenin Помощь студентам 0 22.01.2012 10:27
Проблема с #include Batsits Общие вопросы C/C++ 1 14.10.2011 20:40
Проблема с путями подключения скриптов regman PHP 9 30.09.2009 13:21
Проблема с путями к БД и *.dll honor БД в Delphi 5 25.01.2008 08:54
include проблема (redefine error) MS VS 2005 CyberM Общие вопросы C/C++ 1 29.06.2007 16:30