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

lumen - 如何在Lumen中更改Public目录路径?,第1张

默认情况下,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/ [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,它可以正常工作。

        本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复