Запуск скрипта PHP из CRON

PVE

Новичок
Запуск скрипта PHP из CRON

Написал скриптик бэкапа на ПХП но никак из крона не запускается.
Пробовал в шеле запустить, запускается как надо
Вот скрипт

PHP:
#!/usr/local/bin/php
<?
function db_con($fun)
{
$host_db = "********";
$login_db = "********";
$passwd_db = "******";

if ($fun == "connect")
{
mysql_connect("$host_db", "$login_db", "$passwd_db");
mysql_select_db("*******");
};
if ($fun == "close")
{
mysql_close(mysql_connect("$host_db", "$login_db", "$passwd_db"));
};
};

$directory = "/disk1/backup";

db_con(connect);
$result = mysql_query("SHOW DATABASES");
while ($row = mysql_fetch_assoc($result)) {
  $nama = "$row[Database]_".time();
  exec("mysqldump -u***** -p'**********' -h********* $row[Database] > $directory/$nama.sql");
  exec("gzip $directory/$nama.sql");
};
db_con(close);
?>
пробовал ставить на файл права +x и a+x, но всеравно в кроне не работает
строка в кроне
*/1 * * * * /disk1/backup.php
Пробовал разные варианты, может дело в том что скрипт не совместим с кроном?
Не могли бы подсказать, зарание спасибо!
 

Bitterman

Новичок
Думаю, что это вопрос скорее к админу хостинга.
Когда я на хостинге подключал скрипт к крону, там среди прочих, было требование, чтобы файл был записан в Unix-формате. Так как я юзал Total Commander, то мне было достаточно просто поменять "Transfer mode" с Binary на Text. Может быть дело в этом.
 

PVE

Новичок
Автор оригинала: Bitterman
Думаю, что это вопрос скорее к админу хостинга.
Когда я на хостинге подключал скрипт к крону, там среди прочих, было требование, чтобы файл был записан в Unix-формате. Так как я юзал Total Commander, то мне было достаточно просто поменять "Transfer mode" с Binary на Text. Может быть дело в этом.
Я этот файл писал в шеле, поэтому я думаю он в Unix формате был записан, или может всетаки в другом формате?

-~{}~ 14.08.06 13:41:

Автор оригинала: svetasmirnova
Какие ошибки cron выдаёт?
Я делаю команду tail -f /var/log/cron и ошибок никаких не пишет или может где-то в другом месте нужно их смотреть?
 

svetasmirnova

маленький монстрик
>Я делаю команду tail -f /var/log/cron и ошибок никаких не пишет или может где-то в другом месте нужно их смотреть?

Зависит от того, как cron настроен. Мне, например, он на e-mail все ошибки шлёт. И от того, как php-cli настроен, кстати, тоже: если дело таки до php доходит и ошибки отключены, то ты ничего не увидишь.
 

XOR_URAL2

Новичок
Возможные ошибки:
1.Файл в формате винды перенос строки два символа а в юниксе 1
2.#!/usr/local/bin/php - по этому адресу нет ничего, либо лежит заглушка в chroot-е, возможно в системе вообще нет php, а к апачу он прикручен модулем
3.попробуй в кронтаде прописать так
#!/usr/local/bin/php /path/script_name.php
4. И если хочешь чтобы все работало из крона запусти это сначала из шела....
 

svetasmirnova

маленький монстрик
XOR_URAL2
а также ещё 33 варианта, которые проще перебрать, чем один раз посмотреть ошибку.
 

Gorynych

Посетитель PHP-Клуба
PVE

а) а Вы правда хотите, чтобы скрипт запускался каждую минуту?

б) честно говоря, я обычно пишу в качестве команды
полный_путь_к_интерпретатору -q полный_путь_к_скрипту [> путь к лог-файлу]

по логике ваше #!/usr/local/bin/php вроде бы ничего, но кто его знает...

в) иногда помогает разобраться в происходящем добавление в crontab

MAILTO=ваш_e-mail

(оно будет отсылать Вам ошибки)
 

XOR_URAL2

Новичок
2 svetasmirnova
я написал все что знал кто его знает может поможет парню, или я в чем то не прав???
 

Gorynych

Посетитель PHP-Клуба
XOR_URAL2
Файл в формате винды перенос строки два символа а в юниксе 1
хм... Мне всегда казалось, что редактирование crontab'а делается командой crontab -e, а просмотр crontab -l

ну еще можно добавить, что не стоит в качестве разделителей использовать табуляцию :)
 

PVE

Новичок
Автор оригинала: Gorynych
PVE

а) а Вы правда хотите, чтобы скрипт запускался каждую минуту?

б) честно говоря, я обычно пишу в качестве команды
полный_путь_к_интерпретатору -q полный_путь_к_скрипту [> путь к лог-файлу]

по логике ваше #!/usr/local/bin/php вроде бы ничего, но кто его знает...

в) иногда помогает разобраться в происходящем добавление в crontab

MAILTO=ваш_e-mail

(оно будет отсылать Вам ошибки)
Каждую минуту это для теста, а потом будет время изменено
А в каком файле прописывается MAILTO=ваш_e-mail?
 

XOR_URAL2

Новичок
нет нет про crontab -e ты безусловно прав, я писал про написание скрипта под виндой, если редактор кривой то он делает переносы в формате win и иногад при запуске из под sh это действительно вызывает проблемы
 

Gorynych

Посетитель PHP-Клуба
PVE

да прямо в crontab'е и прописывается (до запуска команд). В качестве переменной окружения.

http://www.freebsd.org/doc/ru/books/handbook/configtuning-cron.html

-~{}~ 14.08.06 14:57:

"...в качестве теста"

человек, у тебя там базы дампятся вообще-то. Оно все там висит небось давным-давно, да?
 

PVE

Новичок
Суперски всем спасибо, проблема была в том, что нужно все пути указывать полностью, а именно
exec("mysqldump -u***** -p'**********' -h********* $row[Database] > $directory/$nama.sql");
нужно было прописать путь mysqldump полностью, всем спасибо!
MAILTO - ужас как помогло!!!! =)))))
Спасибо! =))))
 
Сверху