Kar*_*arl 5 php apache environment-variables laravel laravel-4
我正在使用Github将我的站点部署到我的生产服务器.因此,我不想存储.env.*.php文件,所以它们都在我的.gitignore中.
在每个环境目录中,我设置了要使用的数据库配置getenv(),例如:
<?php
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => getenv('DB_HOST'),
'database' => getenv('DB_NAME'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
);
Run Code Online (Sandbox Code Playgroud)
然后我进入了我的虚拟主机的apache conf文件并设置环境变量,如下所示:
SetEnv DB_HOST ***.***.***.***
SetEnv DB_NAME database
SetEnv DB_USERNAME databaseuser
SetEnv DB_PASSWORD databasepass
Run Code Online (Sandbox Code Playgroud)
这一切都在生产服务器上完美运行.
但是,我只是手动导入数据库而不是使用,php artisan migrate因为它不起作用.
我知道它不起作用,因为它没有达到apache所以变量没有设置,但我尝试了很多方法来试图解决这个问题,但我还没有运气.
我试过强迫环境看看它是否可以通过使用来获取变量 php artisan --env=production migrate
我还尝试通过运行检查它是否正在使用正确的环境,php artisan env并且它正在使用正确的生产环境.
我的下一个想法是在生产服务器上手动创建.env.production.php文件.我创建了一个并使用了getenv(),以防它像这样工作,但发生了同样的错误,所以我尝试手动设置变量而不使用getenv(),我仍然没有运气.
任何想法将不胜感激.
您应该按照laravel 文档中的描述使用.env.php文件。
.env.php要在生产中设置环境变量,您可以使用项目根目录中命名的文件:
<?php
# .env.php
return array(
'DB_HOST' => 'localhost',
'DB_NAME' => 'my_database',
'DB_USER' => 'user_name',
'DB_PASS' => 'super-secret-sauce',
);
Run Code Online (Sandbox Code Playgroud)
对于不同的环境,您使用不同的 .env 文件。例如,在本地环境中您将使用.env.local.php,而在测试中您将使用.env.testing.php。
migrate当运行像或这样的 artisan 命令时,db:seed您可以使用该--env=选项指定环境。
例如$ php artisan db:seed --class=UsersTableSeeder --env=testing
| 归档时间: |
|
| 查看次数: |
3017 次 |
| 最近记录: |