【问题标题】:How to get public directory?如何获取公共目录?
【发布时间】:2013-02-12 16:25:00
【问题描述】:

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

【问题讨论】:

  • 你使用的是 Laravel 3 还是 Laravel 4?

标签: laravel laravel-4


【解决方案1】:

使用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'];,除非有人能建议我为什么不应该这样做?
  • @inigo 这不是没用的,你只是没有按预期使用它。如果你想改变 public 的目录,你需要告诉 Laravel:stackoverflow.com/questions/31758901/…
【解决方案2】:

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

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

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

【讨论】:

  • 是在 laravel 中定义的 base_path .. 我用它我得到这个错误 Call to undefined function base_path()
  • 是的 - 它在 helpers.php 中定义。我在我的 L4 应用程序上进行了测试——它可以工作。确保您运行的是最新的 L4 版本 - 它可能不在早期版本中。
【解决方案3】:

我知道这有点晚了,但如果其他人看到这个,你现在可以使用 public_path();在 Laravel 4 中,它已被添加到支持文件夹 see here 中的 helper.php 文件中。

【讨论】:

    【解决方案4】:

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

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

    没有必要包含所有变量,但这只是为了演示目的。

    希望这会有所帮助, GRnGC

    【讨论】:

      【解决方案5】:

      我认为您正在寻找的是asset('');创建符号链接后,您可以使用资产('storage')。

      【讨论】:

        猜你喜欢
        • 2020-09-08
        • 2014-11-28
        • 1970-01-01
        • 2019-12-22
        • 1970-01-01
        • 2015-09-03
        • 2010-10-01
        • 1970-01-01
        • 2013-09-26
        相关资源
        最近更新 更多