我是Laravael的新手,我是一个由另一个开发者开发的网站,我需要将此网站迁移到另一台服务器。
目前,我正在测试环境。这是我的结构: 测试(本地) 暂存(subdomaindomain.com在线测试) 制作(Domain.com)
$env = $app->detectEnvironment(array(
'testing' => array('localdomain.dev'),
'staging' => array('develop.domain.com'),
'production' => array('www.domain.com')
));
我有相应的文件夹和文件来覆盖原件。
在这一行之后,我创建了一个echo $ env,结果总是在本地(domain.dev)的PRODUCTION上进行暂存(develop.domain.com)
答案 0 :(得分:0)
自Laravel 4.1起,环境检测仅使用主机名,不是域。引用the docs:
环境检测更新
出于安全原因,URL域可能不再用于检测您的应用程序环境。这些值很容易被欺骗,并允许攻击者修改请求的环境。您应该将环境检测转换为使用机器主机名(Mac,Linux和Windows上的
hostname
命令)。
您不必使用各种服务器的域名,而是必须使用该计算机的主机名。
如果您不知道机器的主机名,请尝试以下操作:
echo gethostname();
然后在您的环境数组中使用它。
答案 1 :(得分:0)
如果您不想使用主机名,还可以在Web服务器虚拟主机配置中设置环境变量。对于Apache:SetEnv APP_ENV production
然后:
$env = $app->detectEnvironment(function()
{
return getenv('APP_ENV') ?: 'testing';
});