AWS Elastic Beanstalk:运行Cron.d脚本,缺少环境变量

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)

希望这可以帮助!


fou*_*r43 9

我刚发现这个,使用

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的答案.

  • 该文件已移至/ opt/elasticbeanstalk/support/envvars (3认同)
  • @AlexMarkov使用此命令:`$ source/opt/elasticbeanstalk/support/envvars.d/sysenv`,设置为该文件的所有变量将在当前shell中作为环境变量提供. (2认同)