![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Привет!
Есть скрипт, в котором через require_once подключается файл config. Скрипт примерно такой структуры.
Пишу require_once('../config.php') в самом начале скрипта, до объявления функции. В таком случае при попытке открыть скрипт браузером, браузер мне сообщает, что такого файла не существует. "Такого файла" - имеется ввиду скрипта, который я пытаюсь запустить. Начинает работать, если я require_once('../config.php') вношу в тело функции. Подскажите, пожалуйста, почему не работает в первом случае? И как получить "вменяемую" ошибку, вместо "файл не найден"? Это сообщение отредактировал(а) V0fka - 24.11.2013, 13:00 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
тонкость в том, что при включении файла "текущим" каталогом становится каталог этого файла. А функция вызывается из другого файла. Разумно включать абсолютным именем файла, а не относительным. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| V0fka |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
ksnk, не могли бы вы объяснить как для тех, кто в танке. Потому что не пойму. Сделал тест. Имеется такая структура:
. test1.php . test (это каталог) ... test.php ... test2.php Т.е. есть файл test1.php и каталог test, которые находятся на одном уровне. В каталоге находится 2 файла: test и test2. Содержимое файлов следующее: test.php:
test1.php:
test2.php:
Запускаю на выполнение test.php и получаю результат: .../public_html/test .../public_html/test Т.е. текущий каталог вроде как один и тот же показывает. Пробовал такой вариант файла test (запускаемого файла):
Аналогично, выводит один и тот же каталог. В общем, не дошло что-то ко мне... |
||||||||
|
|||||||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Как запускается скрипт? mod_php из под сервера Appache ведет себя как я написал, CLI из командной строки не меняет текущий каталог при включении. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
не надо придумывать тестовые примеры, которые только запутывают.
на существующем конкретном случае посмотри текущие пути. вставь echo getcwd() на место вызова require в обоих случаях и посмотри и да, решение в: в качестве опоры стандартно используют $_SERVER['DOCUMENT_ROOT'] |
|||
|
||||
| V0fka |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Из браузера. Но вообще скрипт должен отрабатывать по расписанию (по CRON-у). В общем, наверное, нужно просто взять себе за правило не указывать относительные пути, как вы пишете, и эти проблемы будут не актуальны. Да, действительно, нужно было так сделать сразу. Хоть скрипт и работает, но обязательно сделаю так, как вы говорите, потому что причину поведения почему "так" работает, а "этак" нет, я не очень хорошо понял. Точнее вроде как понял, что где-то каталог "левый" устанавливается, но где именно это происходит - не понял.
Возьму это себе за правило. ksnk, bars80080, большое спасибо за ответы! |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а это как раз разные вещи, если конечно скрипт не запускается с директивой wget если же скрипт запустить из крона напрямую, то весьма вероятно что будут полностью отсутствовать переменные окружения. к примеру, тот же массив $_SERVER будет отсутствовать конкретной задаче - конкретные решения |
|||
|
||||
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
bars80080, понял, спасибо! Пищу для размышления получил.
|
|||
|
||||
![]()
|
| Правила форума "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. |