拉拉维尔 5 变public_path()

2022-08-30 09:04:50

我正在尝试将文件夹移动到其他位置。但是,我找不到修改变量的地方。现在,“public_path()”返回错误的文件夹路径。publicpublic_path()

在哪里可以设置变量 ?public_path()


答案 1

您可以使用 ioc 容器覆盖公共路径:

对我而言,完美的工作是增加了以下三行:public/index.php

 $app->bind('path.public', function() {
    return __DIR__;
});

有关更详细的说明,请单击此处


答案 2

虽然接受的答案适用于来自 HTTP 的请求,但它不适用于 。artisan

如果需要了解自定义公共路径,则需要扩展 Laravel 主应用程序类。我知道这听起来很可怕,但实际上非常简单。artisan

您需要做的就是遵循:
步骤1:在文件中:更改变量的第一个声明bootstrap/app.php$app

$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

以反映您自己的自定义应用程序类:

$app = new App\Application(
    realpath(__DIR__.'/../')
);

第 2 步:在某个位置定义自定义应用程序类。例如app/Application.php

<?php namespace App;

class Application extends \Illuminate\Foundation\Application
{
}

恭喜!您已经扩展了 Laravel 核心应用程序类。

第 3 步:覆盖该方法。将Laravel原始方法复制并粘贴到您的新类中,并根据需要进行更改。在我的特殊情况下,我确实喜欢这样:publicPath

public function publicPath()
{
    return $this->basePath.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'public_html';
}

就是这样!可以采用相同的方式覆盖 Application 类中的任何方法。


推荐