fou*_*r43 14 php cron amazon-web-services amazon-elastic-beanstalk
我正在尝试运行由cron脚本(在cron.d中)触发的PHP脚本.脚本被正确触发,但它缺少存储在$ _SERVER超全局中的Elastic Beanstalk"环境变量".该脚本现在作为用户"root"运行,但它不在具有环境变量的相同环境中.变量设置正确,如果我从一个完整的shell运行脚本它运行得很好.
这些变量的"出口"在哪里?它们在哪里定型?我在/etc/apache/conf.d/aws_env.conf中找到了Apache的SetEnvs.我在用户的.bashrc,.bash_profile等中找不到任何内容.有解决方法吗?更好的方法吗?
谢谢.
Elt*_*kes 15
在搜索同一问题的解决方案时,我遇到了这篇博文:http://sebgoo.blogspot.nl/2013/10/elastic-beanstalk-cron-command-and-rds.html.总而言之,您可以使用以下opt/elasticbeanstalk/support/envvars文件加载Elastic Beanstalk环境变量:
0 3 * * * . /opt/elasticbeanstalk/support/envvars; some_command
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
我刚发现这个,使用
grep -r "export MY_VAR" /
Run Code Online (Sandbox Code Playgroud)
编辑:亚马逊似乎不时移动文件位置.当前位置是:
/opt/elasticbeanstalk/support/envvars
Run Code Online (Sandbox Code Playgroud)
所以我想在调用我的PHP脚本之前,我将在我的脚本中包含(源[文件路径]).看起来仍然是一种时髦的做事方式.我还在寻求更好的解决方案.
我是通过cron触发的bash脚本运行PHP的.所以为了设置环境,我会做这样的事情:
#!/bin/bash
source /opt/elasticbeanstalk/support/envvars
php -f my-script.php
Run Code Online (Sandbox Code Playgroud)
有关PHP解决方案,请参阅下面的@ userid53的答案.