【发布时间】:2013-02-12 16:25:00
【问题描述】:
我是这里的初学者,所以请原谅我这个问题,我正在使用 return File::put($path , $data); 在 Laravel 的公共文件夹中创建一个文件。我从控制器中使用了这段代码我需要知道$path的值应该如何。
【问题讨论】:
-
你使用的是 Laravel 3 还是 Laravel 4?
我是这里的初学者,所以请原谅我这个问题,我正在使用 return File::put($path , $data); 在 Laravel 的公共文件夹中创建一个文件。我从控制器中使用了这段代码我需要知道$path的值应该如何。
【问题讨论】:
使用public_path()
供参考:
// Path to the project's root folder
echo base_path();
// Path to the 'app' folder
echo app_path();
// Path to the 'public' folder
echo public_path();
// Path to the 'storage' folder
echo storage_path();
// Path to the 'storage/app' folder
echo storage_path('app');
【讨论】:
public_path() 实际上毫无用处——它只是假设你所有的公共文件都在一个名为“public”的目录中——即使它们不是。例如,我总是必须将默认的“public”目录更改为“public_html”(与我的服务器一致)。 Laravel 不承认这一点。所以不要依赖这个来判断你的公共目录到底是什么。我只是使用$_SERVER['DOCUMENT_ROOT'];,除非有人能建议我为什么不应该这样做?
您可以使用 base_path() 来获取应用程序的基础 - 然后将您的公用文件夹添加到其中:
$path = base_path().'/public';
return File::put($path , $data)
注意:对于允许人们将文件上传到您的 public_html 根目录时,请非常小心。如果他们上传自己的 index.php 文件,他们将接管您的网站。
【讨论】:
我知道这有点晚了,但如果其他人看到这个,你现在可以使用 public_path();在 Laravel 4 中,它已被添加到支持文件夹 see here 中的 helper.php 文件中。
【讨论】:
从 Laravel 配置中检索公用文件夹路径的最佳方法是函数:
$myPublicFolder = public_path();
$savePath = $mypublicPath."enter_path_to_save";
$path = $savePath."filename.ext";
return File::put($path , $data);
没有必要包含所有变量,但这只是为了演示目的。
希望这会有所帮助, GRnGC
【讨论】:
我认为您正在寻找的是asset('');创建符号链接后,您可以使用资产('storage')。
【讨论】: