【问题标题】:Can't use public_path() in a helper file Laravel 5.4不能在帮助文件 Laravel 5.4 中使用 public_path()
【发布时间】:2017-08-21 09:41:17
【问题描述】:

我在app/Helpers 目录中有一个helper.php 文件。我将该文件包含在composer.json

...
        "files": [
            "app/Helpers/helpers.php"
        ]
...

Helper 工作正常,但我不能在那里使用public_path() 方法。我需要包含另一个文件(请不要问我为什么,因为它是我不需要重写的旧代码)。所以我有以下内容:

require_once public_path() . '/appadmin/bootstrap.php';

我知道默认情况下 Laravel 会在 /public/ 文件夹中查找,但我遇到了一个问题。如果我需要执行composer update 我必须在helper.php 中使用public/appadmin/bootstrap.php 路径,但是在执行之后我必须将该路径更改为/appadmin/bootstrap.php 才能正确工作。这就是为什么我决定使用public_path() 方法来接收这两种情况的正确路径。如果我使用它,我会收到一个错误:

 Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postUpdate
    Script Illuminate\Foundation\ComposerScripts::postUpdate handling
 the post-update-cmd event terminated with an exception


      [ReflectionException]             
      Class path.public does not exist  

提前致谢!

【问题讨论】:

    标签: laravel laravel-5 laravel-facade


    【解决方案1】:

    您是否尝试过将您的应用更新到当前版本?

    框架本身有一些文件需要更新。

    在此处查看配置文件、引导文件、server.php 和启动文件https://github.com/laravel/laravel/tree/develop

    您可以打开index.php(在您的公共目录中)并更改:

    $app = require_once __DIR__.'/../bootstrap/app.php';
    
    // set the public path to this directory
    $app->bind('path.public', function() {
        return __DIR__;
    });
    

    现在,当您的公共目录发生变化时,您不需要更改您的公共路径。

    【讨论】:

    • 对不起,我已经使用 5.4。我去看看server.php,谢谢
    • 我没有更改任何 Laravel 文件。当我在没有“public_path()”功能的情况下执行“composer update”或“composer install”时——一切正常
    • 我已经检查过了。似乎没有帮助。我遇到了同样的错误
    • 你确定这是你能找到的唯一错误吗?你能发布helper.php文件
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多