Php 在laravel 4中为测试环境设置不同的公共路径

Php 在laravel 4中为测试环境设置不同的公共路径,php,laravel,Php,Laravel,我在start.php中设置了一个测试环境: $env = $app->detectEnvironment(array( 'local' => array('http://localhost*', '*.dev'), )); 现在我想为local环境定义一个不同的公共路径 制作:'public'=>DIR'/../../../../../www/' 本地:'public'=>DIR'/../../../../www/local' 但是paths.php位于bootstrap

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

$env = $app->detectEnvironment(array(
    'local' => array('http://localhost*', '*.dev'),
));
现在我想为
local
环境定义一个不同的公共路径

制作:'public'=>DIR'/../../../../../www/'

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

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

您不知道

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


官方文件包括以下内容:。当您使用环境时,强烈建议(从安全角度来看)使用机器名,而不是URL。

几天前也遇到了同样的问题:我需要将公共目录名从“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/illumb/Foundation/start.php中完成

注意:这尚未在生产环境中进行测试(本周计划部署),但已在本地环境中进行了测试


希望有帮助。

您可以访问
路径.php中的
$env
变量(因为它刚从
start.php
中包含)。因此,您可以内置交换机:

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

在生产中对我有效。

无需这样做,因为Laravel和环境的工作方式,您只需将测试配置和测试相关项目插入到您可以访问的引导文件中即可。