我有一个crontab,用于触发运行AWS CLI命令“aws ec2 create-snapshot”的PHP脚本。
当我通过命令行运行脚本时,php脚本成功完成,aws命令将一个JSON字符串返回给PHP。但是当我设置一个crontab来运行php脚本时,aws命令不会返回任何内容。
crontab与我自己在命令行上运行PHP脚本的用户一样运行,所以我有点难过?
答案 0 :(得分:6)
我在运行ruby脚本时遇到了同样的问题(ruby script.rb)。 我用它的完整路径替换ruby(/sources/ruby-2.0.0-p195/ruby)并且它有效。 在你的情况下,用它的完整路径替换“aws”。找到它: find / -name“aws”
答案 1 :(得分:1)
指定aws命令的完整路径所必需的原因是因为默认情况下cron在非常有限的环境中运行。我也遇到了这个问题,并通过将其添加到cron脚本来调试它:
set | sort > /tmp/environment.txt
然后我通过cron和命令行运行脚本(在运行之间重命名环境文件)并比较它们。这让我看到我需要设置PATH和AWS_DEFAULT_REGION环境变量。执行此操作后,脚本运行得很好。