如何更改Lumen中的Public目录路径?
How to change the Public directory path in Lumen?
默认情况下,Lumen "same as Laravel" 有 myApp/public
目录来放置所有 public 文件(资产)。
我想将该目录路径从 myApp/public
更改为 myApp/src/custom/public
。我怎样才能做到这一点?
我相信你应该 "point" 你的 vhost 到新位置(假设你 moved/renamed public 目录到你想要的路径)。仅当您的服务器尚未以这种方式配置时才需要。
然后从您的新位置打开 index.php 和 "fix" 到 bootsrap/app 的路径。php
然后从 Lumen 基础目录打开 server.php 并在您发现 "public" 提到的两个位置编辑路径。
没有真正对此进行测试,但看起来应该可以。试一试。
您可以像这样使用 IoC 容器覆盖 public 目录:
App::bind('path.public', function()
{
return base_path().'/public_html';
});
但我更喜欢使用指向 public 文件夹的符号链接,如下所示:
ln -s public public_html
遇到同样的问题,解决了。看,说不定对你有帮助。
我已经为我的 Lumen 应用程序完成了这个解决方案,它对我有用。
更新
好的,让我们继续进行一些更改以使系统与您的树一起工作。
在应用程序的根目录 myApp\
中添加一个 .htaccess
文件。写在 :
RewriteEngine On
RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC]
RewriteRule ^ %1 [L,NE,R=302]
RewriteRule ^((?!public/).*)$ src/custom/public/ [L,NC]
假设您已经配置了指向 \Path\myApp
的虚拟主机,我们现在访问 myApp\src\custom\public\
的索引文件。如果我们没有犯任何错误,那么我们应该到达一个指示错误的页面,告诉我们找不到 bootstrap/app.php
文件。逻辑。
因此我们必须更改目录 myApp\src\custom\public
中的 index.php 文件:
由此变化:
$app = require __DIR__.'/../bootstrap/app.php';
对此:
$app = require __DIR__.'/../../../bootstrap/app.php';
您现在可以直接从想要的路径获取您的主页。
我也为此苦苦挣扎,并在其他地方找到了解决方案。
我想要以下目录结构:
.hosting root dir
├── lumen_app_dir <---
├── other_app_dir
├── etc...
└── public_html
└──lumen_app_public_dir <---
所以我做了以下事情:
- 已将
index.php
和 .htaccess
从 lumen_app_dir/public
复制到 lumen_app_public_dir
。
像这样更改了 index.php
:
$app = require __DIR__.'/../../lumen_app_dir/bootstrap/app.php';
$app->run($app['request']);
这里重要的部分是,我必须包含 $app['reqest']
作为 运行 函数的参数。
并且它在默认 .htaccess
文件中没有任何更改就可以正常工作。我可以在 server.dev/lumen_app_public_dir
访问 Lumen 安装
一种解决方案是在 appServiceProvider.php 注册方法中绑定来自 public 的路径:
$app->bind('path.public', function() {
return __DIR__; });
一个可靠的方法是进入你的 public_html/index.php!
我正在使用 Lumen 6.x,它工作正常。
默认情况下,Lumen "same as Laravel" 有 myApp/public
目录来放置所有 public 文件(资产)。
我想将该目录路径从 myApp/public
更改为 myApp/src/custom/public
。我怎样才能做到这一点?
我相信你应该 "point" 你的 vhost 到新位置(假设你 moved/renamed public 目录到你想要的路径)。仅当您的服务器尚未以这种方式配置时才需要。
然后从您的新位置打开 index.php 和 "fix" 到 bootsrap/app 的路径。php
然后从 Lumen 基础目录打开 server.php 并在您发现 "public" 提到的两个位置编辑路径。
没有真正对此进行测试,但看起来应该可以。试一试。
您可以像这样使用 IoC 容器覆盖 public 目录:
App::bind('path.public', function()
{
return base_path().'/public_html';
});
但我更喜欢使用指向 public 文件夹的符号链接,如下所示:
ln -s public public_html
遇到同样的问题,解决了。看
更新
好的,让我们继续进行一些更改以使系统与您的树一起工作。
在应用程序的根目录
myApp\
中添加一个.htaccess
文件。写在 :RewriteEngine On RewriteCond %{THE_REQUEST} /public/([^\s?]*) [NC] RewriteRule ^ %1 [L,NE,R=302] RewriteRule ^((?!public/).*)$ src/custom/public/ [L,NC]
假设您已经配置了指向 \Path\myApp
的虚拟主机,我们现在访问 myApp\src\custom\public\
的索引文件。如果我们没有犯任何错误,那么我们应该到达一个指示错误的页面,告诉我们找不到 bootstrap/app.php
文件。逻辑。
因此我们必须更改目录
myApp\src\custom\public
中的 index.php 文件:由此变化:
$app = require __DIR__.'/../bootstrap/app.php';
对此:
$app = require __DIR__.'/../../../bootstrap/app.php';
您现在可以直接从想要的路径获取您的主页。
我也为此苦苦挣扎,并在其他地方找到了解决方案。
我想要以下目录结构:
.hosting root dir
├── lumen_app_dir <---
├── other_app_dir
├── etc...
└── public_html
└──lumen_app_public_dir <---
所以我做了以下事情:
- 已将
index.php
和.htaccess
从lumen_app_dir/public
复制到lumen_app_public_dir
。 像这样更改了
index.php
:$app = require __DIR__.'/../../lumen_app_dir/bootstrap/app.php'; $app->run($app['request']);
这里重要的部分是,我必须包含
$app['reqest']
作为 运行 函数的参数。
并且它在默认 .htaccess
文件中没有任何更改就可以正常工作。我可以在 server.dev/lumen_app_public_dir
一种解决方案是在 appServiceProvider.php 注册方法中绑定来自 public 的路径:
$app->bind('path.public', function() {
return __DIR__; });
一个可靠的方法是进入你的 public_html/index.php! 我正在使用 Lumen 6.x,它工作正常。