Linux crond 不工作

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);

编辑

在浏览器部分。我已经使用 登录phpmyadminroot因此当我尝试时localhost/work/images.php,它运行良好。/usr/bin/php , and works in/var/www/html/work/images.php inPuTTY SSH`。

但作业失败了crond。我重新启动了 cronservice crond restart一切正常 [OK],然后尝试/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

答案1

哦,天啊,别再对基本系统二进制文件进行 chmod 操作了。这样做不会有什么好处。

如果您能够以 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)并且您的脚本不包含任何额外的库。

答案2

将您的 cron 作业更改为

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

这将捕获脚本中的任何输出/tmp/job.log。如果幸运的话,它将拥有您需要的信息,以查明发生了什么。

看一下/var/log/cron并查看其中是否也有相关消息。

相关内容