Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив $_SERVER при использовании CRON, Откуда взять путь к home-dir при CRON? 
V
    Опции темы
tolik777
Дата 21.11.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.6.2006

Репутация: нет
Всего: 2



В скриптах указываю путь до директории так: $_SERVER[DOCUMENT_ROOT].'/мой путь/

Но когда этот скрипт вызываю при помощи CRON, то скрипт не работает (переменной $_SERVER нет).
Можно ли как-то при использовании крона указывать путь до домашней директории, не прописывая полного пути? Т.е. чтобы привязки не было к home-директории.
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 21.11.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Код

$_SERVER[DOCUMENT_ROOT]

Это переменная окружения апача. Используй getcwd()


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
tolik777
Дата 21.11.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.6.2006

Репутация: нет
Всего: 2



Ха!, так getcwd()  не даст мне путь до моей домашней директории.

Скрипт то в кроне запускается: /usr/bin/php /home/my_dir/public_html/path/script.php
И в getcwd() скорее всего будет директория php или крона.

Я помню даже я в каком-то скрипте PHP, запускаемым из под крона делал chdir() на мой home dir, потому как скрипты неправильно инклудились.
PM MAIL WWW ICQ   Вверх
ZlojEzh
Дата 21.11.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

Репутация: 10
Всего: 15



Цитата(tolik777 @  21.11.2006,  13:03 Найти цитируемый пост)
указывать путь до домашней директории

Цитата(tolik777 @  21.11.2006,  13:03 Найти цитируемый пост)
чтобы привязки не было к home-директории

имхо, противоречие налицо

только один извратный вариант приходит в голову:
некий скрипт вызывается извне (по http) запросом по крону
а потом этот скрипт просто инклудит тот, который, собсна, и нужно запускать

но это действительно изврат редкий...
PM MAIL ICQ   Вверх
-=Ustas=-
Дата 21.11.2006, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



tolik777, ну а почему ты не хочешь просто прописать строку?! Если не хочешь то парси константу __FILE__


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
tolik777
Дата 22.11.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 19.6.2006

Репутация: нет
Всего: 2



Просто в этом скрипте много вызовов include. Скрипт очень сложный, там много расчетов различных и подключений файлов + взаимодействие с файловой структурой и т.д.
А эти файлы вызываются не только из под крона, но и часто подключаются при обычной работе web-сайта. Поэтому изменением одной строчки не обойтись, хотя и было сделано сразу что в начале каждого файла определяется константа с путями, которые беруться из $_SERVER.

Видимо решения нет, поэтому сделал просто принудительно в файле определил путь: $_SERVER['DOCUMENT_ROOT'] = '/home/my_dir/public_html';
Впринципе и так не плохо. Главное не забыть потом переопределять ее.

PM MAIL WWW ICQ   Вверх
Eugene_Bond
Дата 22.11.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



dirname(__FILE__) -- правильное решение.

то есть лучше всего, если переопределять серверную переменную сделать так:

Код

$_SERVER['DOCUMENT_ROOT'] = realpath(dirname(__FILE__).'/../../');

ну или какая там вложенность у скрипта..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.