2

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

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

4

5 回答 5

3

我也为此苦苦挣扎,并在其他地方找到了解决方案。

我想要以下目录结构:

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

所以我做了以下事情:

  1. index.php将和.htaccessfrom复制lumen_app_dir/publiclumen_app_public_dir.
  2. 像这样改变了index.php那里:

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

    这里重要的部分是,我必须将其$app['reqest']作为运行函数的参数。

它只是在默认.htaccess文件中没有任何更改的情况下工作。我可以在以下位置访问 Lumen 安装server.dev/lumen_app_public_dir

于 2015-09-02T08:38:47.417 回答
2

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

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

但我更喜欢像这样使用指向公共文件夹的符号链接:

ln -s public public_html
于 2015-06-11T19:48:35.050 回答
2

遇到了同样的问题,解决了。看这里,也许它会对你有所帮助。我已经为我的 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]
    

假设您已将 vhost 配置为指向\Path\myApp,我们现在加入myApp\src\custom\public\. 如果我们没有犯任何错误,那么我们应该进入一个指示错误的页面,告诉我们bootstrap/app.php找不到文件。逻辑。

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

    从此改变:

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

    对此:

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

您现在可以直接从所需路径获取您的主页。

于 2015-06-12T12:36:16.460 回答
0

我相信您应该将您的虚拟主机“指向”新位置(假设您将公共目录移动/重命名为您想要的路径)。仅当您的服务器尚未以这种方式配置时才需要。

然后从新位置打开 index.php 并“修复” bootsrap/app.php 的路径

然后从 Lumen 基本目录打开 server.php 并在您发现提到的“公共”两个位置编辑路径。

没有真正对此进行测试,但看起来它应该可以工作。试试看。

于 2015-06-11T19:47:34.713 回答
0

一种解决方案是在 appServiceProvider.php 注册方法中绑定 public 的路径:

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

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

于 2019-10-09T06:55:05.287 回答