我在start.php中设置了一个测试环境:
$env = $app->detectEnvironment(array(
'local' => array('http://localhost*', '*.dev'),
));
现在我想为local
环境
制作:'public'=>的 DIR 即可。 '/ .. / .. / .. / WWW /',
local:'public'=>的 DIR 即可。 '/ .. / .. / .. / WWW /本地',
但是paths.php位于bootstrap文件夹而不是app中,那么如何设置不同的公共路径呢?
答案 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 中完成。
注意:这尚未在生产中进行测试(本周安排的部署),但针对本地环境进行了测试
希望它有所帮助。