У меня есть 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
и посмотрите, есть ли там какие-либо связанные сообщения.