你指出的非常好,Laravel猜測環境吮吸我們用用它的方式,但你可以改變:
這是我做完美設置我的環境,所以我沒有處理與主機名,仍然不會讓我的本地環境與分期和生產衝突。
在應用程序的根目錄下創建一個.environment
文件並定義您的環境,並添加您的敏感信息吧:
<?php
return array(
'APPLICATION_ENV' => 'development', /// this is where you will set your environment
'DB_HOST' => 'localhost',
'DB_DATABASE_NAME' => 'laraveldatabase',
'DB_DATABASE_USER' => 'laraveluser',
'DB_DATABASE_PASSWORD' => '!Bassw0rT',
);
它添加到您.gitignore
文件,這樣你就不會冒險讓您的密碼發送Github或任何其他您的服務器。
$app->detectEnvironment
前右,文件bootstrap/start.php
中,加載.environment
文件PHP環境:
foreach(require __DIR__.'/../.environment' as $key => $value)
{
putenv(sprintf('%s=%s', $key, $value));
}
然後你只需要使用它:
$env = $app->detectEnvironment(function() {
return getenv('APPLICATION_ENV'); // your environment name is in that file!
});
它將工作無處不在,所以你不需要單獨的開發和生產dirs:
<?php
return array(
'connections' => array(
'postgresql' => array(
'driver' => 'pgsql',
'host' => getenv('DB_HOST'),
'database' => getenv('DB_DATABASE_NAME'),
'username' => getenv('DB_DATABASE_USER'),
'password' => getenv('DB_DATABASE_PASSWORD'),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
),
);
請注意,我沒有設置回退:
return getenv('APPLICATION_ENV') ?: 'local';
因爲我希望它失敗每個服務器我部署我的應用程序上,要永遠不會忘記他們配置我的環境。
然後你只需在你的DatabaseSeeder類選擇環境:
public function run()
{
if(App::environment() === 'development')
{
$this->call('UserTableSeeder');
}
}
不錯''app-> instance()'破解。感謝分享它。 –