programing

Laravel 5 변경 public_path()

testmans 2023. 10. 12. 22:15
반응형

Laravel 5 변경 public_path()

이동하려고 합니다.public폴더를 다른 곳으로 이동합니다.하지만 수정할 장소를 찾을 수 없습니다.public_path()변수.이제 'public_path()'는 폴더의 잘못된 경로를 반환합니다.

어디서 변수를 설정할 수 있습니까?public_path()?

ioc 컨테이너를 사용하여 공용 경로를 재정의할 수 있습니다.

저에게 완벽하게 작용한 것은 다음과 같습니다.public/index.php다음 세 줄

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

자세한 설명은 여기를 클릭하십시오.

승인된 답변은 HTTP에서 오는 요청에 대해 작동하지만, 다음에 대해서는 작동하지 않습니다.artisan.

필요하시면artisan사용자 지정 공용 경로를 알기 위해서는 Laravel 메인 Application 클래스를 확장해야 합니다.무섭게 들리겠지만, 사실 아주 간단해요.

다음만 수행하면 됩니다.
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 core Application 클래스를 확장했습니다.

3단계: 덮어쓰기publicPath방법.Laravel의 원래 메서드를 새 클래스에 복사하여 붙여넣고 필요에 따라 변경합니다.저의 특별한 경우에 저는 이렇게 했습니다.

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

그거에요!Application 클래스의 모든 메서드를 동일한 방식으로 덮어쓸 수 있습니다.

추가할 것을 제안합니다.app/Providers/AppServiceProvider.php:

public function register()
{
    $this->app->bind('path.public', function() {
        return realpath(base_path().'/../public_html');
    });
}

영향을 끼칩니다.artisan뿐만 아니라.

laravel 5.6에서는 이 코드를 bootstrap/app.php에 추가합니다.

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

여기서 __DIR_'././'공용 폴더의 경로입니다.

Laravel 6.0에 있는 저의 경우는 이것을 수행합니다.
이 파일: bootstrap/app.php

......
$app = new Illuminate\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__) );

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

public_path() 폴더를 변경했는데, 이 예는 httpdocs 폴더로, 원하는 대로 물을 넣을 수 있습니다.

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

파일 시스템 업데이트를 시도해 보셨습니까?php

'disks' => [

    'public' => [
       'driver' => 'local',
             'root' => env('PATH_PUBLIC'),
       'visibility' => 'public',
       'url' => env('SITE_ROOT'),
    ],

언급URL : https://stackoverflow.com/questions/31758901/laravel-5-change-public-path

반응형