我想知道是否有人可以提供帮助。
我已经完成了Laravel 4的环境设置,它似乎无法正常工作。
在我的MAMP设置中,我创建了protected.dev主机
在我的Bootstrap-> start.php中,我有我的本地网址
$env = $app->detectEnvironment(array(
'local' => array('protected.dev')
));
我在app-> config目录中创建了一个'local'目录,复制了标准的database.php文件,然后修改了'local'目录下的database.php文件。
当我尝试显示网站时,我得到了
Access denied for user 'root'@'localhost'
位于标准config-> database.php文件中。
由于某种原因,它似乎无法检测到它的本地环境。
非常感谢任何帮助。
干杯,
答案 0 :(得分:16)
在laravel 4中,环境由机器名称设置,而不是由Web服务器URL设置。
要确定您的主机名,请使用hostname terminal命令。
在终端中输入主机名(这适用于linux和mac)并将结果剪切并粘贴到局部变量中的start.php文件中,它应该可以正常工作。
示例:
angoru @ angel-mountain:〜$ hostname
天使山
我的start.php
$env = $app->detectEnvironment(array(
'local' => array('angel-mountain'), // Change this to your local machine hostname.
'staging' => array('your-staging-machine-name'),
'production' => array('your-production-machine-name'),
));
有关详细说明:Environment Configuration
答案 1 :(得分:3)
Laravel 4不再依赖虚拟主机来检测工作环境。它现在使用机器的主机名来完成它。因此,您需要将protected.dev
更改为您计算机的主机名。在Linux上,您可以通过在终端中运行以下命令来查找计算机的主机名:
hostname
有关此http://laravel.com/docs/configuration#environment-configuration
的更多信息答案 2 :(得分:1)
在拥有多个开发人员的环境中,每个开发人员都可以将其主机名添加到本地' start.php中的数组:
$env = $app->detectEnvironment(array(
'local' => array('user1-hostname','user2-hostname'), // Developers local hostnames
'staging' => array('your-staging-machine-name'),
'production' => array('your-production-machine-name'),
));
答案 3 :(得分:0)
如果您使用localhost域或其他一些没有点的虚拟主机测试Laravel项目(我通常会这样做),在bootstrap/start.php
中使用此类代码可能会有所帮助:
$env = $app->detectEnvironment(function(){
if (strpos($_SERVER['HTTP_HOST'],'.') === false) {
return 'local';
}
return 'production';
});
后:
$app = new Illuminate\Foundation\Application;
这使得即使您将代码移动到其他目录或移动到没有点的另一台机器/另一个虚拟主机,您也不必将机器名称添加到local
台机器中。
如果需要,您当然可以添加更多规则(包括127.0.0.1
或某些名称为.dev
的主机)。