4

Laravel 4 アプリで複数の環境をセットアップしようとしていますが、使用している環境に応じて当然異なるデータベースをセットアップしようとしています。

私のローカル マシンでは、「local.elders.dev」の仮想ホストをセットアップしました。

残念ながら、何らかの理由で次のコードが機能しません。

$env = $app->detectEnvironment(array(
    'local' => array('http://local.elders.dev'),
));

職人のコマンドか何かを実行する必要があるかもしれません。私は近づいていると感じていますが、まだ十分ではありません!

ありがとうございます !

4

6 に答える 6

3

Laravel 4x を使用して同じマシンで複数の環境を処理する

同じ名前の同じマシンで複数の環境を実行したい場合はどうすればよいでしょうか? たとえば、ステージング環境と本番環境とローカル環境などです。

Laravel 4x で環境を処理するためのより良い解決策があり、vhosts ファイルまたは .htaccess に 1 つのライナーを追加することで実行できます。

ローカル環境変数を設定する

vhost または .htaccess で、ローカル インストール用に、ステージング用に追加します。たとえば、次のように追加します。

SetEnv LARAVEL_ENV staging

本番環境の.htaccess または vhostでも同じです:

SetEnv LARAVEL_ENV production

次に、start.php の通常の detectEnvironment() 関数。

$env = $app->detectEnvironment(function()
{
// Default to local if LARAVEL_ENV is not set
return getenv('LARAVEL_ENV') ?: 'local';
});

ローカルを忘れていませんでした...そしてそれがクールな部分です.vhostまたは.htaccessに環境変数が見つからない場合、インストールはデフォルトでローカルに設定されます。

于 2014-12-16T03:12:02.433 に答える
3

私はこれが答えられていることを知っていますが、解決策を探している他の人にとっては...

私の環境検出設定は次のようになります。

$env = $app->detectEnvironment(array(

// Development
// any machine name with the term "local" will use the local environment
'local' => array('*local*'),

// Stage
// any machine name with the term "stage" will use the stage environment
'stage' => array('*stage*')

// Production
// production is default, so we don't need to specify any detection

));

これは、開発に "local" を使用する限り ("localhost"、"localhost:8000"、"my.app.local" など)、どのプロジェクトでも機能するので便利です。「ステージ」も同様です。また、プロダクションはデフォルトであるため、「ローカル」または「ステージ」のないものはすべてプロダクションで機能します。

于 2013-08-29T18:56:57.437 に答える
1

わかった !問題を解決しました...コードは実際に正常に機能していました! 問題は、私が使用していたことです

$_SERVER['DB1_HOST'] //for Pagodabox.

もちろん、これは私のローカル環境では設定されていなかったため、アプリはほとんど壊れていました...

私は単に行うことで修正しました:

isset($_SERVER['DB1_HOST']) ? $_SERVER['DB1_HOST'] : '';

@jeroen と @theshiftexchange に感謝します :)

于 2013-01-26T10:31:22.833 に答える
0

に置き換えてみてください'local.elders.dev'。100%確実ではありませんが、フルパスではなくホスト名と一致している可能性があります。

于 2013-01-25T21:26:16.453 に答える
0

Laravel 4 は、「bootstrap/start.php」ファイルで指定されたマシン名から環境を検出します。

たとえば、私の場合、構成は次のようになります。

$env = $app->detectEnvironment(array(
  'local' => array('Victor.local', 'Victor-PC'),
));

これは、Laravel が「Victor.local」(Mac) と「Victor-PC」(Windows) の両方のマシンに「ローカル」環境設定を使用することを意味します。

現在のマシン名を知るには、次の PHP コードを使用できます。

<?php echo gethostname(); ?>

環境ごとに、app/config にフォルダーを作成し、必要な構成ファイルとプロパティを置き換えることができます。

よろしく!

于 2014-12-16T00:41:52.110 に答える