我想更改Laravel 5.1存储路径:类似/home/test/storage
的东西。这样做的好处是这些文件不存储在存储库中,我认为这相当难看。
在Laravel 4中,这对于bootstrap/paths.php
来说非常简单。
在Laravel 5中,它通过在bootstrap/app.php
中使用$app->useStoragePath('/path/')
来工作。但是,我想用配置选项来定义存储路径,如$app->useStoragePath(config('app.storage_path')
。配置选项调用环境变量或返回默认位置。
这样做的结果是Uncaught exception 'ReflectionException' with message 'Class config does not exist'
;这是有意义的,因为这个函数还没有加载。
我尝试在启动后设置存储路径:
$app->booted(function () use ($app) {
$app->useStoragePath(config('app.storage_root'));
});
这没有改变什么。我还尝试了直接绑定到path.storage
:
$app->bind('path.storage', function ($app) {
return config('app.storage_root');
});
最后一种选择部分有效;现在,视图高速缓存被放置在正确的位置,但是日志仍然在旧位置。
8条答案
按热度按时间zazmityj1#
在.env中设置
app.php
app/Providers/AppServiceProvider.php
.环境
gajydyqb2#
Laravel 5.3位于** Bootstrap /app.php**中
mo49yndu3#
下面是一个简单的解决方案,可以像在Laravel 4中一样更改Laravel 5中的存储路径
在 Bootstrap /app. php上
这将使存储路径与会话、视图、缓存、日志相同
k3bvogb14#
这适用于Laravel 5.2
文件:
app/Providers/AppServiceProvider.php
sdnqo3pr5#
在您的
AppServiceProvider
上调用useStoragePath
将无法正确执行此工作,因为AppServiceProvider
是在加载配置文件后调用的。因此,在配置文件中使用storage_path
仍将引用旧的存储路径。为了正确地解决这个问题,我建议您扩展
Application
类,然后在您自己的类的构造函数上编写以下内容。eqoofvh96#
如果您的网站是托管的;
将所有内容从公用文件夹移动到根文件夹
izj3ouym7#
在你的bootstrap/app.php中添加这段代码:
和config/filesystem.php中:
然后运行
php artisan config:cache
xpszyzbs8#
这在Laravel 5.8上有效,因为您必须在尝试使用环境变量之前加载它们。
文件: Bootstrap /app. php