php - aws elasticbeanstalk application environment



AWS ElasticBeanstalk ENV Vars no funciona (1)

Estoy alojando mi proyecto de PHP en servidores AWS EC2, utilizando Elastic Beanstalk. Configuré mis ENV Vars usando php dotenv , que parecen obtener mis vars muy bien desde mi archivo raíz .env :

DbConnect.php:

require '../vendor/autoload.php';
$dotenv = new Dotenv($_SERVER['DOCUMENT_ROOT']);
$dotenv->load();

$DB_HOST = getenv('DB_HOST');
$DB_USERNAME = getenv('DB_USERNAME');
$DB_PASSWORD = getenv('DB_PASSWORD');
$DB_DATABASE = getenv('DB_DATABASE');

$mysqli = new mysqli($DB_HOST, $DB_USERNAME, $DB_PASSWORD, $DB_DATABASE);

Por lo tanto, en AWS Management Console, configuré los mismos ENV nombrados en la configuración del software, git push y re eb-deployed. Recibo un error de 500 porque los vars EC2 ENV no parecen estar mejorando.

¿Hay algo más que deba hacer?

Actualizar:

eb printenv muestra los valores de env var correctos.


Cita de https://github.com/vlucas/phpdotenv

phpdotenv está hecho para entornos de desarrollo y, en general, no debe utilizarse en producción. En producción, las variables de entorno reales deben configurarse para que no haya gastos indirectos al cargar el archivo .env en cada solicitud. Esto se puede lograr a través de un proceso de implementación automatizado con herramientas como Vagrant, chef o Puppet, o puede configurarse manualmente con hosts en la nube como Pagodabox y Heroku.

Tendrá un error fatal php si no tiene el archivo .env

Error fatal: excepción no detectada 'Dotenv \ Exception \ InvalidPathException' con el mensaje 'No se puede leer el archivo de entorno en /home/vagrant/Code/project/.env.' en /home/vagrant/Code/project/vendor/vlucas/phpdotenv/src/Loader.php en la línea 75

Si lo desea, a continuación se muestra el código de muestra que puede establecer Environment Variable para verificar, solo carga la clase Dotenv si está en entorno local / de prueba

if(getenv('APP_ENV') === 'local' || getenv('APP_ENV') === 'testing')
{
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
}

O otro método es comprobar si el archivo .env existe o no

$filePath = rtrim(__DIR__, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR . '.env';
if(is_file($filePath) && is_readable($filePath))
{
    $dotenv = new Dotenv\Dotenv(__DIR__);
    $dotenv->load();
}




elastic-beanstalk