如何在Lumen中更改Public目录路径?

时间:2015-06-11 19:28:54

标签: lumen

默认情况下,Lumen “与Laravel相同”具有myApp/public目录以放置所有公共文件(资产)。

我想将该目录路径从myApp/public更改为myApp/src/custom/public。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:3)

我也在努力解决这个问题并在其他地方找到了解决方案。

我想要以下目录结构:

.hosting root dir
 ├── lumen_app_dir <---
 ├── other_app_dir
 ├── etc...
 └── public_html
     └──lumen_app_public_dir <---

所以我做了以下事情:

  1. index.php.htaccesslumen_app_dir/public复制到lumen_app_public_dir
  2. 像这样更改了index.php

    $app = require __DIR__.'/../../lumen_app_dir/bootstrap/app.php';
    
    $app->run($app['request']);
    

    这里的重要部分是,我必须包含$app['reqest']作为运行功能的参数。

  3. 它只是在默认.htaccess文件中没有任何更改的情况下工作。我可以在server.dev/lumen_app_public_dir

    访问Lumen安装

答案 1 :(得分:2)

您可以使用IoC容器覆盖您的公共目录,如下所示:

App::bind('path.public', function()
{
    return base_path().'/public_html';
});

但我更喜欢使用符号链接到公共文件夹,如下所示:

ln -s public public_html

答案 2 :(得分:2)

遇到同样的问题,并解决了它。看here,也许它会对你有所帮助。 我为我的Lumen应用程序完成了这个解决方案,这对我有用。

<强>更新

好的,让我们继续进行一些更改,让系统与您的树一起使用。

  1. 在应用程序的根目录中添加.htaccess文件,以便在目录myApp\中添加。写下来:

    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
    RewriteRule ^ %1 [L,NE,R=302]
    RewriteRule ^((?!public/).*)$ src/custom/public/$1 [L,NC]
    
  2. 假设您已将vhost配置为\Path\myApp,我们现在加入myApp\src\custom\public\的索引文件。如果我们没有犯任何错误,那么我们应该到一个指示错误的页面,告诉我们找不到bootstrap/app.php文件。逻辑。

    1. 因此,我们必须更改目录myApp\src\custom\public中的index.php文件:

      从此改变:

      $app = require __DIR__.'/../bootstrap/app.php';
      

      对此:

      $app = require __DIR__.'/../../../bootstrap/app.php';
      
    2. 您现在可以直接从所需路径获取主页。

答案 3 :(得分:0)

我相信你应该&#34;指向&#34;你的vhost到新位置(假设你将公共目录移动/重命名为你想要的路径)。这只是你的服务器尚未配置这种方式。

然后从新位置打开index.php并修复&#​​34;修复&#34; bootsrap / app.php的路径

然后从Lumen基地目录打开server.php并在您找到的两个位置编辑您的路径&#34; public&#34;提及。

没有真正对此进行测试,但看起来应该可行。试一试。

答案 4 :(得分:0)

一种解决方案是将路径绑定到appServiceProvider.php注册方法中的公共路径:

$app->bind('path.public', function() {
     return __DIR__;  });

一种可靠的方法是进入您的public_html / index.php! 我正在使用Lumen 6.x,它可以正常工作。