无法在帮助文件Laravel 5.4中使用public_path()

时间:2017-08-21 09:41:17

标签: laravel laravel-5 laravel-facade

我在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  

提前感谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试将应用更新为当前版本?

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

查看配置文件,引导程序文件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__;
});

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