【问题标题】:Setup different public path in laravel 4 for testing environment在 laravel 4 中为测试环境设置不同的公共路径
【发布时间】:2013-05-12 14:10:09
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 没有必要这样做,因为 Laravel 和环境的工作方式,您可以将您的测试配置和测试相关项目插入您有权访问的引导文件中。

标签: php laravel


【解决方案1】:

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

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

在生产中为我工作。

【讨论】:

    【解决方案2】:

    你没有。

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      该文件(特定于您的环境)在引导过程中被调用,因此这个小技巧应该不会造成问题。

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

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

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        • 2019-11-30
        • 2021-05-12
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 2017-01-20
        相关资源
        最近更新 更多