2017-01-18 20 views
11

Bazen etki alanım (example.test.org) herhangi bir API çağrısı yaparken bana bir hata gösteriyor.Bir etki alanından değil, bir etki alanından gelen API çağrısından hata kodu Tanımsız dizin:

"{"error":{"code":500,"message":"Undefined index: DB_HOST","file":"\/var\/www\/app\/config\/production\/database.php","line":7}}". 

Ancak yerel makinemin genel IP'si ile çalışıyor. Bir etki alanından bir hata döndüren herhangi bir sebepten başka bir sebep olmaz mı? API, Laravel 4.2 üzerinde çalışıyor.

DatabaseFunctions.php çıkış

return array(
    'DB_HOST' => 'my-app.cvrrctfasmvk.us-east-1.rds.amazonaws.com', 
    'DB_PORT' => '*****', 
    'DB_NAME' => '**************', 
    'DB_USER' => '**********', 
    'DB_PASS' => '***********', 
    'SMTP_HOST' => '*******************', 
    'SMTP_USER' => '***********************', 
    'SMTP_PASS' => '********************************', 
    'AWS_KEY' => '****************************', 
    'AWS_SECRET' => '*******************', 
    'AWS_QUEUE' => '*****************************************', 
    'FB_APP_ID' => '*****************', 
    'FB_APP_SECRET' => '*********************' 
); 

DB Sunucu dosya bu arada şuna benzer gibi bu değerler görünüyor ki /var/www/.env.php gelen

<?php 

return array(
    'default' => 'pgsql', 
    'connections' => array(
    'pgsql' => array(
     'host'  => $_ENV['DB_HOST'], 
     'port'  => $_ENV['DB_PORT'], 
     'database' => $_ENV['DB_NAME'], 
     'username' => $_ENV['DB_USER'], 
     'password' => $_ENV['DB_PASS'], 
    ), 
), 
); 

olduğunu . Elbette tanımlanabilir değerleri x

<?php 

return array(
    'DB_HOST' => 'my-app-.xxxxxx.us-east-1.xxx.amazonaws.com', 
    'DB_PORT' => 'xxxx', 
    'DB_NAME' => 'xxxx_app_xxx_db', 
    'DB_USER' => 'xxxx', 
    'DB_PASS' => 'xxxx', 
    'SMTP_HOST' => 'email-xxx.xxxx.amazonaws.com', 
    'SMTP_USER' => 'xxxxxxx', 
    'SMTP_PASS' => 'xxxx', 
    'AWS_KEY' => 'xxx', 
    'AWS_SECRET' => 'xxxx', 
    'AWS_QUEUE' => 'https://sqs.xxxxx.amazonaws.com/xxxx', 
    'FB_APP_ID' => 'xxxxx', 
    'FB_APP_SECRET' => 'xxxx' 
); 

için değiştirilmesini ile bu sorun /var/www/.env.php Dosya okunurken yaşıyor gibi görünüyor. Dizideki ilk öğe bir hata döndürüyor.

+1

Sadece düzenleyicinizin dosyaya komik, gizli karakterler eklemediğini kontrol edin. "'DB_HOST'" metnini seçin ve silin (VIM'de olduğunuz gibi bir seçiminiz olmadıkça, tek seferde bir karakter silmeyin, ancak tümünü seçip silin) ​​ve sonra yeniden yazın. – Robbie

cevap

2

En iyi atış süper globaller yükleme ve hangi değişkenler istiyorum sırasını kontrol yapar, size php.ini dosyayı sizin variables_order dize kontrol etmektir, büyük bir ihtimalle variables_order dizede bir E kaçırıyorsun. PHP adam sayfalarından

:

variables_order dize Setleri EGPCS (Çevre, alın, Post, Kurabiye ve Server) değişken ayrıştırma sırası. Örneğin, eğer variable_order "SP" olarak ayarlanmışsa, PHP $ _SERVER ve $ _POST superglobals'ını oluşturacaktır, ancak $ _ENV, $ _GET ve $ _COOKIE oluşturamaz. "" "a ayarlanmak, süper küresel olmayanlar olarak ayarlanmayacağı anlamına gelir.

PHP man pages

Ben muhtemelen farklı php.ini dosyaları beri, sadece yerel olarak $_ENV yükleme düşünüyorum fazlasını buradan okuyun.

1

Açıkçası, bu hata iletisini aldığınızda, $_ENV değişkeninizde bir 'DB_HOST' dizininin olmaması.

Bazen ortam değişkenleri süper küresel $_ENV bulunmaz ama sadece benim web sunucusu (çalışan PHP 5.5.9) bu test ettik getenv()

ile getirilen edilebilir: o zaman

<?php 
// test.php 
echo $_ENV['PATH']; 
?> 

$ php test.php 
PHP Notice: Undefined index: PATH in /tmp/env.php on line 2 

bu işleri yaparken:

<?php 
// test.php 
echo getenv("PATH"); 
?> 

$ php test.php 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 
İlgili konular