2015-06-17 9 views
9

çalışmıyor.AWS ElasticBeanstalk ENV Vars ben Elastik Sihirli Fasulye kullanarak, AWS EC2 sunucularında benim PHP projesi ev sahipliği yapıyorum

DbConnect.php: Ben kök .env dosyadan benim değişkenler alıyor gibi sadece iyi görünmek php dotenv kullanarak ENV Vars, kurdum

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); 

Yani, AWS yönetim konsolunda, Yazılım yapılandırmasında aynı adlandırılmış ENV varslarını ayarlıyorum, gitmeli ve e-konuşlandırıldı. 500 hatası alıyorum çünkü EC2 ENV varsayıyor gibi görünmüyor.

enter image description here

Yapmam gereken başka bir şey var mı?


Güncelleme:

eb printenv

doğru env var değerlerini sergiledi. Eğer istiyorsanız Aşağıda Environment Variable ayarlayabilirsiniz örnek kod

Fatal error: Uncaught exception 'Dotenv\Exception\InvalidPathException' with message 'Unable to read the environment file at /home/vagrant/Code/project/.env.' in /home/vagrant/Code/project/vendor/vlucas/phpdotenv/src/Loader.php on line 75

dosya .env yoksa

+2

aşağı olmayan tüm açıklamaları bunu oy veren bilmiyordum. Soru benim için detay ile tamam görünüyor. Eğer downvoted varsa, her zaman env vars onları Öngördüğünüz olduğundan emin olmak için 'eb printenv' kullanabilirsiniz – BMW

+1

bazı nedenler vermek iyi olur. –

+1

yerine getenv tüm Envvars için '$ _SERVER [ 'DB_HOST']' sözdizimi kullanılarak denediniz mi? –

cevap

5

Alıntı https://github.com/vlucas/phpdotenv

phpdotenv is made for development environments, and generally should not be used in production. In production, the actual environment variables should be set so that there is no overhead of loading the .env file on each request. This can be achieved via an automated deployment process with tools like Vagrant, chef, or Puppet, or can be set manually with cloud hosts like Pagodabox and Heroku.

dan Sen php ölümcül hata olacaktır yerel/test ortamında açıksa sadece Dotenv sınıfı yüklemek, kontrol etmek

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

Veya başka bir yöntem .env dosyasını kontrol olduğunu yok veya

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