![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
V0fka |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Привет!
Имеем такую структура . .. dir1 .... file1.php .... file2.php .. dir3 .... file3.php В файле file1.php подключается file2:
в котором подключаем file3
Но если структура поменяется так . .. dir1 .... dir11 ........ file1.php .... file2.php .. dir3 .... file3.php И в file1 изменить путь подключения на
то получаю ошибку, что file3 не найден, т.к. вот это подключение
хоть и выполняется в file2.php, но путь ищется относительно file1.php. Можно как-то сделать, чтобы require_once отрабатывало относительно того файла, в котором вызывается? |
||||||||
|
|||||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
V0fka, каким образом вызывается файл? С консоли или сервером? Если вызывается модулем апача, то всегда инклюдится относительно файла, если консолью - всегда относительно "главного" скрипта.
Для единообразия можно делать chdir перед включением.
Существуют более другие средства автоматизации поиска файлов. установить include_path с нужными каталогами iniset('include_path',...); и включать файлы без указания каталога. не использовать инклюд в явном виде вообще, а настроить автолод (spl_autoload), чтобы он сам искал классы в нужных местах. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
ksnk, дело в том, что я не совсем в курсе что подразумевается под "консолью" или "сервером". Скрипт должен вызываться по CRON-у, но для отладки и проверки я запускаю его из браузера. Так вот при запуске из браузера, я как раз и обнаружил эту досадную штуку, т.к. перенес скрипты в каталог на уровень ниже, поменял путь к некоторым подключаемым файлам (вместо ../../ сделал ../../../) и скрипты перестали работать, ругаясь о невозможности подкчлючения файлов в в тех скриптах, которые не трогались и не перемещались. Менять что-то в не моих скриптах я не хочу, т.к. они используются в других, мне не известных, местах и я боюсь, что потом долго и нудно придется отлавливать новые неизвестные ошибки. Поэтому я подумал, что может быть есть возможность в вызывающем (главном/запускаемом) скрипте как-то явно указать, чтобы require_once во всех скриптах, в т.ч. и подключаемых, выполнялось относительно того файла, откуда эта функция вызывается.
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
консоль - запуск через php. Крон именно так и запускает скрипт. Сервер запускает через модуль апача. У них разная логика в обработке.
Я уже предложил 3 возможных способа решить проблему. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
еще один вариант - использовать в кроне команду fetch
тогда починять придется только один вариант запуска. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
V0fka |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
ksnk, спасибо за ответы! Буду пробовать применть что-то из вами предложенного.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |