Forum Webscript.Ru
Программирование => PHP => Тема начата: Angel07 от 08 Мая 2007, 16:18:47
-
Уважаемые господа!
Такой вопрос: нужно сделать запуск PHP-скрипта из cron-а каждый час с передачей ему параметров методом POST и возвратом результата по мылу.
Пробовал делать файл конфигурации для crontab:
MAILTO=mail@host.com
REQUEST_METHOD=POST
...
0 * * * * cat $HOME/txt.txt |/usr/local/bin/php $HOME/script.ph
Успешно его "импортирую" в crontab.
И сервер начинает каждый час возвращать письма от Cron Daemon с... ошибкой "No Input File Specified" :-(
Причем эта ошибка возникает только тогда, когда в конфигарации для crontab-а указана переменная REQUEST_METHOD=POST. Без этого приходят письма с выводом скрипта, запущенного без параметров.
Что я неправильно делаю, с чем связана ошибка и возможно ли успешное решение? Какой input file оно просит? :-)
Заранее _большое_ спасибо за помощь!
---
С уважением,
Андрей
P.S. Права доступа на файл скрипта: rwxr-x-r-x, на файл txt.txt - rw-r--r--. Команда cat $HOME/txt.txt в SSH успешно віводит содержимое файла, команда /usr/local/bin/php $HOME/script.php также успешно отрабатывает, соответственно, все файлы находятся...
-
попробуй прописать полный путь до cat (/bin/cat например)
-
ОК, спасибо, попробую
-
Angel07:
Причем эта ошибка возникает только тогда, когда в конфигарации для crontab-а указана переменная REQUEST_METHOD=POST. Без этого приходят письма с выводом скрипта, запущенного без параметров.
про REQUEST_MODE не осилил. Что это за конфигурация кронтаба ?
Возможно в окружении под которым выполняется скрипт из крона нет переменной $HOME
-
Извиняюсь, описался, я имел в виду REQUEST_METHOD - переменную среды,
передающую метод обращения к скрипту. В норме эту переменную для
скрипта устанавливает веб-сервер, а при "прямом" вызове из командной строки
приходится самим :-)
Кстати, сначала PHP при запуске из cron-а ругался, что, дескать, "PHP
cannot be accessed directly" и требовал переменную среды REDIRECT_STATUS. Я поставил
REDIRECT_STATUS=200 OK Правильно ли я сделал?
А вообще, правильная ли у меня в принципе командная строка для запуска
скрипта с передачей ему содержимого файла на STDIN? Я уже сомневаться начал...
cat $HOME/txt.txt |/usr/local/bin/php $HOME/script.php
По поводу $HOME - в описании хостинга (Zenon) она есть и ей рекомендуют пользоваться. К тому же, я думаю,если бы ее не было, то и "прямые" командные строки с ее использованием не работали бы (через SSH)
-
Angel07:
Кстати, сначала PHP при запуске из cron-а ругался, что, дескать, "PHP cannot be accessed directly" и требовал переменную среды REDIRECT_STATUS. Я поставил REDIRECT_STATUS=200 OK Правильно ли я сделал?
я думаю такие вопросы лучше задавать в support - только они знают как у них там все это настроено. Вообще похоже что пхп скомпилирован как cgi (а для работы того что ты хочешь сделать рекоменуется php-cli)
Сама команда правильная (ты же сам говорил что работает если в ssh ручками ее выолнить)
Но в команде есть некоторые зависимостит от окружения.
И скрипт, запускаемый cron-ом, может иметь другое окружение, чем то что у тебя в консоли