2

本番用と開発用の 2 つのデータベース構成があります。

// app/config/database.php
'connections' => array(
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => $_SERVER['RDS_HOSTNAME'],
        'database'  => $_SERVER['RDS_DB_NAME'],
        'username'  => $_SERVER['RDS_USERNAME'],
        'password'  => $_SERVER['RDS_PASSWORD'],
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    )
)

// app/config/development/database.php
'connections' => array(
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => $_SERVER['MYSQL_PORT_3306_TCP_ADDR'],
        'database'  => $_SERVER['MYSQL_ENV_MYSQL_DATABASE'],
        'username'  => $_SERVER['MYSQL_ENV_MYSQL_USER'],
        'password'  => $_SERVER['MYSQL_ENV_MYSQL_PASSWORD'],
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    )
)

関連するデータベース環境変数 ( で始まるものMYSQL_) が存在し、migrate コマンドを実行すると、次のようになります。

php artisan migrate --env=development

次の例外がスローされます。

{
    "error":{
        "type":"ErrorException",
        "message":"Undefined index: RDS_HOSTNAME",
        "file":"/var/www/app/config/database.php",
        "line":50
    }
}

プロダクション構成を使用したくないのに、プロダクション構成の環境変数が存在しない場合、Laravel が気にするのはなぜですか? どうすればこれを回避できますか?

4

2 に答える 2

0

私の提案は、代わりに環境変数を使用し、キーが環境間で一致することを確認することです (それがあなたの最大の問題だと思います)。

// File: .env.development.php
return [
    'database_mysql_host' => '',
    'database_mysql_database' => '',
    'database_mysql_username' => '',
    'database_mysql_password' => '',
];

次に、両方の構成ファイルを削除して、変更するだけですapp/config/database.php

'connections' => array(
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => $_ENV['database_mysql_host'],
        'database'  => $_ENV['database_mysql_database'],
        'username'  => $_ENV['database_mysql_username'],
        'password'  => $_ENV['database_mysql_password'],
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    )
)

現時点では、本番サーバーの vhost またはその他の apache 構成ファイルで環境変数を設定していると想定しています。本番環境用に選択した「特別な」キーから設定されているキーを、開発環境で使用しているキーと一致するように変更します。

SetEnv database_mysql_host {your value for RDS_HOSTNAME}
SetEnv database_mysql_database {your value for RDS_DB_NAME}
SetEnv database_mysql_username {your value for RDS_USERNAME}
SetEnv database_mysql_password {your value for RDS_PASSWORD}
于 2015-03-05T15:38:03.567 に答える