我可以从CLI运行这个命令,没有在Fedora盒子上的问题,但不是从Cron:
/usr/bin/php /var/www/support_web/api/cron.php
这是cron输出:
从命令/ usr / bin / php /var/www/support_web/api/cron.php输出
77
文件具有执行权限。
Crontab日志:
Jun 11 11:46:20 www crontab[23453]: (root) BEGIN EDIT (root) Jun 11 11:46:21 www crontab[23453]: (root) REPLACE (root) Jun 11 11:46:21 www crontab[23453]: (root) END EDIT (root) Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/crontab) Jun 11 11:47:01 www crond[2479]: (*system*) WRONG FILE OWNER (/etc/cron.d/smolt) Jun 11 11:47:01 www crond[2479]: (root) RELOAD (cron/root)
你是从CLI和从同一用户的Cron运行它? 如果你以普通用户的身份从CLI运行它,而root用户可能会缺less你的cron.php需要的一些环境variables。
你可以尝试从root cron运行,如下所示:
su - userToRunAs -c "/usr/bin/php /var/www/support_web/api/cron.php"
cron文件必须有root / root用户/组(/ etc / cron *和/etc/cron.{daily,hourly,etc}/*必须由root拥有,否则脚本内的脚本不会触发。
我不知道/ var / spool / cron / $ username下的个人crontabs。 但是,我个人的经验表明,它是根源/“用户组”
还有一些权限要求,但我不知道这些是什么。 不过,我知道,那755件作品。
这很难说,但它可能是你在交互式shell中设置的一个环境variables,但是这不是由cron设置的。 把一些打印语句放在cron.php中,打印出所有依赖的环境variables,这样你就可以看到它是否正确设置。
如果失败了,请添加更多的打印语句来查看正在发生的事情。
例如,如果脚本位于诸如cron.daily这样的自动执行文件的目录中,那么cron某些实现总是使用sh运行而不pipeshebang。 尝试创build简单的sh script,简单地调用/usr/bin/php /var/www/support_web/api/cron.php 。