2016-12-30 32 views
2

我在prod环境中的.env文件中设置了一个配置。如何在不同环境下更改Laravel5.1中的存储路径?

STORAGE_PATH=/dev/shm/runtime 

并在bootstrap/app.php中写入以下代码。

if (env('STORAGE_PATH')) { 
    $app->useStoragePath(env('STORAGE_PATH')); 
} 

它不起作用,因为env('STORAGE_PATH')返回空字符串。似乎.env文件尚未加载。

有人建议在应用程序做到这一点/供应商/ AppServiceProvider.php

public function register() 
{ 
    if (env('STORAGE_PATH')) { 
     $this->app->useStoragePath(env('STORAGE_PATH')); 
     /* or 
     $this->app->bind('path.storage', function() { 
       return env('STORAGE_PATH'); 
     }); 
     */ 
    } 
} 

试过,没有奏效。

我相信一定有一种优雅的方式来完成这项工作。

+0

如果你把字符串放在里面,'useStoragePath()'工作吗? 'dd(env('STORAGE_PATH'));'如果你把它放在寄存器方法中,返回什么? –

+0

@Alexey Mezenin它在引导/ app.php中使用stirng,问题是.env文件尚未加载,那么我应该在哪里写配置值? –

+0

你是否在'register()'方法中尝试了字符串? 'dd()'返回什么?没有这些信息,没有人能够帮助你。在register()方法中, –

回答

0

bootstrap/app.php删除代码。

结帐我的附件图像。它与5.1一起工作。

enter image description here

enter image description here

enter image description here

我只是在查看文件打印出来dd

<div class="title">Laravel 5 {{dd($app->storagePath())}}</div> 
+0

感谢您的支持。这种方式确实改变了Application :: $ storagePath的值,但并没有改变真正的路径。检查折叠存储/ famework/views /,新创建的视图缓存文件将仍然在其中。 –