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


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.