Search code examples
phpamazon-web-servicescronamazon-elastic-beanstalk

AWS Elastic Beanstalk: Running Cron.d script, missing Environment Variables


I'm trying to run a PHP script that is triggered by a cron script (in cron.d). The script is triggered properly but it is missing the Elastic Beanstalk "Environment Variables" that are stored in the $_SERVER superglobal. The script is being run as the user "root" for now, but it's not in the same environment that has the environment variables. The variables are set correctly, if I run the script from a full shell it runs just fine.

Where are the "exports" for these variables? Where do they get set? I found the SetEnvs for Apache in /etc/apache/conf.d/aws_env.conf. I can't find anything in the user's .bashrc, .bash_profile, etc. Is there a workaround? A better way to do this?

Thanks.


Solution

  • I just found this, using

    grep -r "export MY_VAR" /
    

    EDIT: Amazon seems to move the file location from time to time. Current location is:

    /opt/elasticbeanstalk/support/envvars
    

    So I think I'll just include (source [file path]) that in my script before calling my php script. Still seems like a funky way to do things. I'm still in for better solutions.

    I was running PHP via bash script triggered by cron. So to setup the environment, I would do something like this:

    #!/bin/bash 
    source /opt/elasticbeanstalk/support/envvars
    php -f my-script.php
    

    See @userid53's answer below for PHP solution.