我有一个 php 脚本可以触发一些 magento 操作,我将它设置为以下 cron:
cd /home/dir/public_html; php -f file.php;
这会启动脚本,但由于某种原因它没有完成执行,cron 以用户“user”身份运行,当我以 root 用户身份从终端运行命令时,它运行良好。但是,它使用的所有文件都对用户开放。我认为这是路径问题,这就是为什么我将 CD 命令添加到它的前面,但事实并非如此。
我认为这可能是创建锁定文件的问题,我让它创建一个锁定文件,运行脚本,然后删除锁定文件以防止它运行(如果它已经运行)。锁定文件已生成但从未删除,据我所知,如果它以用户“用户”的身份创建它,那么它也应该能够以该用户的身份删除它。
有什么想法吗?非常感谢。
最佳答案
尽量把PHP的完整路径,或者在crontab的第一行定义PATH变量:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin:/usr/sbin
编辑:此外,您可以这样记录脚本:
* * * * * cd /home/dir/public_html; /usr/bin/php -f file.php; &>/tmp/file.log
关于作为 Cron 的 PHP 脚本不起作用,但可以从 CLI 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8040116/