在laravel 4中设置不同的公共路径以用于测试环境

时间:2013-05-12 14:10:10

标签: php laravel

我在start.php中设置了一个测试环境:

$env = $app->detectEnvironment(array(
    'local' => array('http://localhost*', '*.dev'),
));

现在我想为local环境

定义一个不同的公共路径

制作:'public'=>的 DIR 即可。 '/ .. / .. / .. / WWW /',

local:'public'=>的 DIR 即可。 '/ .. / .. / .. / WWW /本地',

但是paths.php位于bootstrap文件夹而不是app中,那么如何设置不同的公共路径呢?

3 个答案:

答案 0 :(得分:3)

您可以访问$env中的paths.php变量(因为它仅包含在start.php中)。所以你可以建立一个开关:

'public' => ($env == 'local') ? __DIR__.'/../public' : __DIR__ . '/some/where/else/public',

在我的制作中适合我。

答案 1 :(得分:2)

你没有。

这不是环境应该如何运作的。环境允许您根据自己的环境使用不同的配置值。例如,您可以在本地环境中使用native会话驱动程序,但在生产环境中,您要使用redis驱动程序。

官方文档涵盖configuration of environments。当您使用环境时,强烈建议(从安全的角度来看)使用机器名称而不是URL。

答案 2 :(得分:0)

前几天遇到了同样的问题:我需要将公共目录名称从“ public ”更改为“ www ”以进行生产,因为它在共享上托管,我无法改变它。

我搜索了一种配置方式,同时坚持配置文件系统。 我是这样做的:创建了一个新文件 /app/start/production.php ,并放入其中:

if ('production' === $app['env'])
{
    $app->instance('path.public', str_replace('public', 'www', $app['path.public']));
}

在引导过程中调用该文件(特定于您的环境),因此这个小的黑客攻击不应该导致问题。

调用本身在第256行的 /vendor/laravel/framework/src/Illuminate/Foundation/start.php 中完成。

注意:这尚未在生产中进行测试(本周安排的部署),但针对本地环境进行了测试

希望它有所帮助。