我有一个用于创建缩略图的 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
,它运行良好。/usr/bin/php , and works in
/var/www/html/work/images.php in
PuTTY 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
并查看其中是否也有相关消息。