如何获得公共目录?


81

我是一个初学者,请原谅我使用此问题return File::put($path , $data);在Laravel上的公共文件夹中创建文件。我使用了控制器中的这段代码,我需要知道它的值$path


您在使用Laravel 3还是Laravel 4?
劳伦斯

Answers:


206

使用 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');

5
只是要补充一点public_path(),实际上实际上是没有用的,它只是假设您所有的公共文件都位于一个名为“ public”的目录中,即使它们不是。例如,我总是必须将默认的“ public”目录更改为“ public_html”(与我的服务器一致)。Laravel没有意识到这一点。因此,请勿依靠此来明智地确定您的公共目录实际是什么。我只是在使用,$_SERVER['DOCUMENT_ROOT'];除非有人可以建议我为什么不这样做?
Inigo

9
@inigo不是没有用的,您只是没有按预期使用它。如果要更改公共目录,则需要将其告知Laravel:stackoverflow.com/questions/31758901/…–
贾斯汀

17

您可以使用base_path()获取应用程序的基础-然后将公用文件夹添加到该应用程序中:

$path = base_path().'/public';
return File::put($path , $data)

注意:在允许人们将文件上传到您的public_html根目录中时要非常小心。如果他们上传自己的index.php文件,他们将接管您的网站。


1
是在laravel中定义的base_path。我用了这个错误,我收到了未定义函数base_path()的调用
Yasser Moussa

是的-它在helpers.php中定义。我在我的L4应用中进行了测试-它可以工作。确保您正在运行最新的L4版本-可能不是早期版本中的版本。
劳伦斯

11

我知道这有点晚了,但是如果其他人遇到这种情况,您现在可以使用public_path();。在Laravel 4中,它已添加到support文件夹中的helper.php文件中,请参见此处


6

从Laravel配置中检索公用文件夹路径的最佳方法是该函数:

$myPublicFolder = public_path();
$savePath = $mypublicPath."enter_path_to_save";
$path = $savePath."filename.ext";
return File::put($path , $data);

不需要所有变量,但这只是出于演示目的。

希望这会有所帮助,GRnGC

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.