Назад | Перейти на главную страницу

linux crond не работает

У меня есть cronjob для создания эскизов. Папка /var/www/html/work/ имеет разрешение 744(Думаю, 744 безопаснее 777)

Crontabs

* * * * * /usr/bin/php /var/www/html/work/images.php

php скрипт

$newstore = dirname(__FILE__) . '/images/.$data->name.'jpg';
$width = (int)($data->width);
$height = (int)($data->height);
$desired_width = round((300*$width)/$height);
$desired_height = 300;
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
imagecopyresized($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height);
imagejpeg($virtual_image,$newstore);

РЕДАКТИРОВАТЬ

В браузерной части. Я авторизовался в phpmyadmin с участием root, Поэтому, когда я пытаюсь localhost/work/images.php, это работает хорошо., and works in/ usr / bin / php /var/www/html/work/images.phpinПуТТЫ SSH`.

но работа не удалась crond. У меня перезапуск cron service crond restart все [ОК], затем попробовал /etc/cron.allow, возвращение -bash: /etc/cron.allow: No such file or directory, бегать /etc/cron.deny, возвращение -bash: /etc/cron.deny: Permission denied.

BTY: vi /var/log/httpd/error_log нет никаких подсказок об ошибках.

В чем проблема? crond setting? или folder permission?

О боже, хватит изменять базовые системные двоичные файлы с помощью chmoding. Ничего хорошего из этого не выйдет.

Если вы можете запустить свой скрипт из командной строки как root, но он не работает в cron, то наиболее вероятными проблемами являются:

1) проблема с разрешением (в частности, основная проблема с разрешением, а не что-то общесистемное, что вы пытаетесь исправить с помощью операторов chmod).

2) проблема PATH.

Что касается №1, смотрели ли вы на право собственности и разрешения на каталог / var / www / html / images? Позволят ли владение и права доступа к этому каталогу пользователю, запускающему cron, изменять файлы?

Собственно, как вы запускаете cron с точки зрения пользователя? Он есть в каталоге /etc/cron.d? Если вы поместили файл cronjob в /etc/cron.d, то формат будет немного другим, поскольку вы должны поместить пользователя, который будет выполнять cron, между полями даты / времени и командой.

Для №2 это маловероятно, поскольку вы указываете абсолютный путь к исполняемому файлу (/ usr / bin / php), а ваш скрипт не включает никаких дополнительных библиотек.

Измените свою работу cron на

* * * * * /usr/bin/php /var/www/html/work/images.php &>/tmp/job.log

это захватит любой вывод вашего скрипта в /tmp/job.log. Если повезет, в нем будет информация, необходимая для того, чтобы понять, что происходит.

Посмотреть в /var/log/cron и посмотрите, есть ли там какие-либо связанные сообщения.