use*_*781 47 php laravel laravel-5
我想将public文件夹移动到其他地方.但是,我找不到修改public_path()变量的地方.现在,'public_path()'返回错误的文件夹路径.
我在哪里可以设置变量public_path()?
Jig*_*ani 48
您可以使用ioc容器覆盖公共路径:
完美无缺的是增加public/index.php了以下三条线:
$app->bind('path.public', function() {
return __DIR__;
});
Run Code Online (Sandbox Code Playgroud)
ruu*_*ter 44
虽然接受的答案适用于来自HTTP的请求,但它不起作用artisan.
如果您需要artisan知道自定义公共路径,则需要扩展Laravel主Application类.我知道这听起来很可怕,但实际上非常简单.
您需要做的就是:
步骤1:在文件中:bootstrap/app.php更改$app变量的第一个声明
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
Run Code Online (Sandbox Code Playgroud)
反映您自己的自定义Application类:
$app = new App\Application(
realpath(__DIR__.'/../')
);
Run Code Online (Sandbox Code Playgroud)
第2步:在某处定义自定义Application类.例如在app/Application.php
<?php namespace App;
class Application extends \Illuminate\Foundation\Application
{
}
Run Code Online (Sandbox Code Playgroud)
恭喜!您已经扩展了Laravel核心Application类.
第3步:覆盖publicPath方法.将Laravel原始方法复制并粘贴到新课程中并根据需要进行更改.在我的特定情况下,我确实喜欢这样:
public function publicPath()
{
return $this->basePath.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'public_html';
}
Run Code Online (Sandbox Code Playgroud)
而已!您可以用相同的方式覆盖Application类中的任何方法.
Bro*_*shi 15
我建议你加入app/Providers/AppServiceProvider.php:
public function register()
{
$this->app->bind('path.public', function() {
return realpath(base_path().'/../public_html');
});
}
Run Code Online (Sandbox Code Playgroud)
这artisan也会影响.
在laravel 5.6中,这对我有用...将此代码添加到bootstrap / app.php中:
$app->bind('path.public', function() {
return realpath(__DIR__.'/../');
});
Run Code Online (Sandbox Code Playgroud)
其中__DIR __。“/ .. /”是路径公用文件夹
| 归档时间: |
|
| 查看次数: |
45209 次 |
| 最近记录: |