Автор Тема: Выполнение скриптов PHP через crontab  (Прочитано 7140 раз)

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Здравствуйте.

Пытаюсь заставить выполняться скрипты через crontab.
Судя по логам, задачи стартуются:

crond[31127]: (root) CMD (/usr/bin/php /var/www/html/site/cron.php)
но скрипт не выполняется. Пробовал вместо /usr/bin/php указывать /usr/bin/php-5.2.5, но это не помогает.

Сама задача выглядит так:
*/10 * * * * /usr/bin/php /var/www/html/site/cron.php
Через браузер скрипт срабатывает без проблем.

Стоит server 4.1, apache2 + php 5.2.5 как модуль.
 
Прошу подсказать что делаю не так.
« Последнее редактирование: 17.04.2009 14:03:18 от vod »

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #1 : 17.04.2009 14:51:15 »
ну для начала просто запустите через консоль а потом уже если будет работать настраивайте крон
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

AlexSid

  • Гость
Re: Выполнение скриптов PHP через crontab
« Ответ #2 : 17.04.2009 15:09:28 »
Дада, за "через браузер" отвечает один конфиг пхп (/etc/php/5.2.9/apache2-mod_php/*),
а в консоли/cron'е - другой (/etc/php/5.2.9/cli/*)

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #3 : 17.04.2009 15:24:05 »
Здравствуйте.

Пытаюсь заставить выполняться скрипты через crontab.
Судя по логам, задачи стартуются:

crond[31127]: (root) CMD (/usr/bin/php /var/www/html/site/cron.php)
но скрипт не выполняется. Пробовал вместо /usr/bin/php указывать /usr/bin/php-5.2.5, но это не помогает.

Сама задача выглядит так:
*/10 * * * * /usr/bin/php /var/www/html/site/cron.php
Через браузер скрипт срабатывает без проблем.

Стоит server 4.1, apache2 + php 5.2.5 как модуль.
 
Прошу подсказать что делаю не так.
в общем то начнем с того что ваш скрипт делает?
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Re: Выполнение скриптов PHP через crontab
« Ответ #4 : 17.04.2009 15:47:01 »
Скрипт кэширует данные из БД.

В общем так, если запускаю скрипт через консоль, указав в скрипте #!/usr/bin/php, никаких ругательств в ответ не получаю, т.е. как бы все успешно проходит.
Но задачу свою скрипт не выполняет.

Если указываю напрямую #!/etc/php/5.2.5/cli/, говорит, что bad interpreter: Permission denied.

Суть в том, что сайт был только что перенесен с FreeBSD, где все прекрасно работало, нужно было лишь  в crontab'е указать путь до интерпритатора. Еще раньше сайт стоял на Дебиане, где тоже все работало. Тут же работает всё кроме крона.

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #5 : 17.04.2009 16:08:10 »
если у вас будет работать что-то типа ):
<?php
echo "Hello World";
?>

#php ./как_вы_его_там_назовете.php
то и скрипт ваш должон работать если он конечно без ошибок.

у меня работает даже если я просто в crontab указываю php без путей
« Последнее редактирование: 17.04.2009 16:10:07 от KPETuH »
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Re: Выполнение скриптов PHP через crontab
« Ответ #6 : 17.04.2009 16:21:13 »
Hello World работает.
Мой скрипт не срабатывает.

Но! Из браузера он работает прекрасно.

Какое тут может быть логическое объяснение?
И как можно попробовать это исправить без редактирования скрипта - он-то рабочий.

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #7 : 17.04.2009 16:37:55 »
Hello World работает.
Мой скрипт не срабатывает.

Но! Из браузера он работает прекрасно.

Какое тут может быть логическое объяснение?
И как можно попробовать это исправить без редактирования скрипта - он-то рабочий.
мне почему то в голову приходит в первую очередь подключение к БД... работает ли оно?

я бы на вашем месте по натыкал в ответственных местах сообщений типа echo "Отлично 1", echo "Отлично 2", и тд... (честно говоря не помню выводятся ли ошибки в консоль, может просто стоит включить вывод всех ошибок и предупреждений...)
и просто помотрел на каком этапе не работает а потом бы уже разобрался с тем участком кода, естественно сделав предварительно бэкап скрипта.

и пока тестируйте просто в консоле если там заработает то и в кроне заработает так же
« Последнее редактирование: 17.04.2009 16:40:11 от KPETuH »
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Re: Выполнение скриптов PHP через crontab
« Ответ #8 : 18.04.2009 14:41:41 »
мне почему то в голову приходит в первую очередь подключение к БД... работает ли оно?

А оно как раз и не работает.
Скрипт перестает выполняться на строчке @mysql_connect($hostname,$username,$password) or die();
Даже понятия не имею куда копать теперь...

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #9 : 18.04.2009 15:50:01 »
А оно как раз и не работает.
Скрипт перестает выполняться на строчке @mysql_connect($hostname,$username,$password) or die();Даже понятия не имею куда копать теперь...
во первых собачку нужно убрать, насколько я знаю она блокирует вывод ошибок? посмотрите че за ошибка вываливается при конекте к базе.
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Re: Выполнение скриптов PHP через crontab
« Ответ #10 : 18.04.2009 17:50:31 »
Вот такая ошибка:

Fatal error: Call to undefined function mysql_connect() in /var/www/html/site/config.php on line 39
Посмотрел phpinfo и меня несколько удивило это:

Loaded Configuration File => (none)

AlexSid

  • Гость
Re: Выполнение скриптов PHP через crontab
« Ответ #11 : 18.04.2009 18:08:14 »
Установить php5-mysql
по поводу "Loaded Configuration File => (none)" - да, странно
P/S:Это https://bugzilla.altlinux.org/show_bug.cgi?id=15617
« Последнее редактирование: 18.04.2009 18:14:54 от AlexSid »

Оффлайн KPETuH

  • Участник
  • *
  • Сообщений: 1 162
    • SG
Re: Выполнение скриптов PHP через crontab
« Ответ #12 : 18.04.2009 20:41:32 »
Fatal error: Call to undefined function mysql_connect() in /var/www/html/site/config.php on line 39Loaded Configuration File => (none)
Наверняка первое из-за второго так как вы говорите что из браузера работает значит все что нужно по идее  установлено, разберитесь как конфиг прикрутить и думаю проблема будет решена )

з.ы. возможно нужно просто обновить пакеты?
« Последнее редактирование: 18.04.2009 20:43:12 от KPETuH »
Мой небосклон и чист, и ясен,
И полон радужных картин...  Не потому что мир прекрасен,  А потому, что я - KPETuH

Оффлайн black

  • alt linux team
  • ***
  • Сообщений: 460
Re: Выполнение скриптов PHP через crontab
« Ответ #13 : 18.04.2009 22:24:45 »
"Не правильно ты, дядя Федор, бутерброд ешь"
Сдается мне, что строка запуска скрипта должна быть типа:
/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1
А сам он лежать в дереве сайта (у вас, видимо, так и есть), тогда все нужные функции подхватятся.
У вас там чай не друпал?

Оффлайн vod

  • Участник
  • *
  • Сообщений: 31
Re: Выполнение скриптов PHP через crontab
« Ответ #14 : 19.04.2009 00:49:48 »
black, сделал через lynx, хотя с php надо все-же разобраться...
Неа, не друпал.

AlexSid, php5-mysql стоит.

KPETuH, ага, в том-то и дело, что вроде бы все что нужно установлено. Будем разбираться.