4

我在start.php中搭建了一个测试环境:

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

现在我想为local环境定义一个不同的公共路径

生产:'public' => DIR .'/../../../www/',

本地:'public' => DIR .'/../../../www/local',

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

4

3 回答 3

3

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

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

在生产中为我工作。

于 2014-02-10T13:05:38.230 回答
2

你没有。

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

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

于 2013-05-12T16:38:43.627 回答
1

几天前刚刚遇到同样的问题:我需要将公共目录名称从“ 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中完成。

注意:这还没有在生产中测试(本周部署),但在本地环境中测试

希望能帮助到你。

于 2013-05-12T21:33:16.260 回答