공개 디렉토리를 얻는 방법?


90

나는 초보자이므로 return File::put($path , $data);Laravel의 공용 폴더에 파일을 만드는 데 사용 하는 이 질문에 대해 용서하십시오 . 컨트롤러에서이 코드를 사용하여 $path어떻게되어야 하는지를 알아야합니다.


Laravel 3 또는 Laravel 4를 사용하고 있습니까?
— Laurence

답변:


217

사용하다 public_path()

참고로 :

// Path to the project's root folder    
echo base_path();

// Path to the 'app' folder    
echo app_path();        

// Path to the 'public' folder    
echo public_path();

// Path to the 'storage' folder    
echo storage_path();

// Path to the 'storage/app' folder    
echo storage_path('app');

5
추가하기 만하면 public_path()실제로는 쓸모가 없습니다. 모든 공개 파일이 "public"이라는 디렉토리에 있다고 가정합니다. 그렇지 않더라도 말입니다. 예를 들어, 항상 기본 "public"디렉토리를 "public_html"(내 서버에 따라)으로 변경해야합니다. 라 라벨은 이것을 인식하지 못합니다. 따라서 공개 디렉토리가 실제로 무엇인지 지능적으로 결정하기 위해 이것에 의존하지 마십시오. 내가 $_SERVER['DOCUMENT_ROOT'];왜 안되는지를 아무도 제안 할 수 없다면 나는 단지 사용하고 있는 것입니까?
— Inigo

9
@inigo는 쓸모가 없으며 의도 한대로 사용하지 않습니다. public 디렉토리를 변경하려면 Laravel에게 알려야합니다. stackoverflow.com/questions/31758901/…
— Justin

18

base_path ()를 사용하여 응용 프로그램의 기반을 얻은 다음 공용 폴더를 추가 할 수 있습니다.

$path = base_path().'/public';
return File::put($path , $data)

참고 : 사람들이 public_html의 루트에 파일을 업로드하도록 허용하는 데 매우 주의 하십시오 . 자신의 index.php 파일을 업로드하면 사이트를 차지하게됩니다.


1
base_path laravel가 정의된다 .. 내가 정의 기능 base_path이 오류 호출있어 그것을 사용 ()
— 야세르 무사

예-helpers.php에 정의되어 있습니다. L4 앱에서 테스트했습니다. 작동합니다. 최신 L4 빌드를 실행하고 있는지 확인하십시오. 이전 버전이 아닐 수도 있습니다.
— Laurence

11

나는 이것이 조금 늦었다는 것을 알고 있지만 다른 누군가가 이것을 발견하면 이제 public_path (); Laravel 4에서는 support 폴더의 helper.php 파일에 추가되었습니다 . 여기를 참조하십시오 .


6

Laravel 설정에서 공용 폴더 경로를 검색하는 가장 좋은 방법은 다음 함수입니다.

$myPublicFolder = public_path();
$savePath = $mypublicPath."enter_path_to_save";
$path = $savePath."filename.ext";
return File::put($path , $data);

모든 변수를 가질 필요는 없지만 이것은 단지 설명을위한 것입니다.

도움이 되었기를 바랍니다. GRnGC

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.