默认情况下,Lumen “与Laravel相同”具有myApp/public
目录以放置所有公共文件(资产)。
我想将该目录路径从myApp/public
更改为myApp/src/custom/public
。我怎样才能做到这一点?
答案 0 :(得分:3)
我也在努力解决这个问题并在其他地方找到了解决方案。
我想要以下目录结构:
.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
答案 1 :(得分:2)
您可以使用IoC容器覆盖您的公共目录,如下所示:
App::bind('path.public', function()
{
return base_path().'/public_html';
});
但我更喜欢使用符号链接到公共文件夹,如下所示:
ln -s public public_html
答案 2 :(得分:2)
遇到同样的问题,并解决了它。看here,也许它会对你有所帮助。 我为我的Lumen应用程序完成了这个解决方案,这对我有用。
<强>更新强>
好的,让我们继续进行一些更改,让系统与您的树一起使用。
在应用程序的根目录中添加.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
文件。逻辑。
因此,我们必须更改目录myApp\src\custom\public
中的index.php文件:
从此改变:
$app = require __DIR__.'/../bootstrap/app.php';
对此:
$app = require __DIR__.'/../../../bootstrap/app.php';
您现在可以直接从所需路径获取主页。
答案 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,它可以正常工作。