我是Laravel的新手,我想请一些帮助。
首先,我尝试设置我的开发'环境根据机器名称,所以我做了这个
die(gethostname()); // output the machine name, in my case is ΛΥΚΟΣ-PC
$env = $app->detectEnvironment(array(
'local' => array('ΛΥΚΟΣ-PC'),
));
但似乎没有效果。所以我按照Environment Configuration上的说明操作并执行了以下操作
$env = $app->detectEnvironment(function(){
switch ($_SERVER['HTTP_HOST']) {
case 'localhost':
return 'local';
break;
default:
return 'production';
break;
}
});
die($env); // outputs 'local'
问题在于,当我尝试进行一些迁移时,我输入了命令行:
$ php artisan migrate
为了创建表,但我得到了这个
*******************************
* Application in Production! *
*******************************
Do you really want to run this command?
如果我继续操作,我会拒绝用户访问#' @' localhost'到数据库'锻造'。
嗯,我想这个问题与环境配置有关。任何想法如何解决它?
答案 0 :(得分:0)
$_SERVER['HTTP_HOST']
解决方案与Artisan不兼容的原因是$_SERVER['HTTP_HOST']
变量仅在通过Web服务器启动时可用。
'local' => array('ΛΥΚΟΣ-PC')
应该有用,可能与特殊字符有关。
我根据laravel路径设置我的环境:
$env = $app->detectEnvironment(array(
'local' => strpos(getcwd(), '/local')>-1,
'staging' => strpos(getcwd(), '/staging')>-1,
));
因此,如果/local
是路径的一部分,则环境设置为本地。 注意:您可能需要在Windows上将/
替换为\
。
您还可以为Artisan指定环境:
php artisan migrate --env=local
但我建议您按顺序安排环境,让一切变得更轻松。并且减少了制作麻烦的可能性。
答案 1 :(得分:0)
最佳做法是在使用artisan命令时始终明确包含环境。你可以这样做:
php artisan migrate --env=local
这将确保命令在local
环境中运行。