Cum se obține directorul public? (Programare, Laravel, Laravel 4)

Yasser Moussa a intrebat.

Sunt un începător aici, așa că iertați-mă pentru această întrebare folosesc return File::put($path , $data); pentru a crea un fișier în directorul public pe Laravel. Am folosit această bucată de cod din controler Am nevoie să știu valoarea lui $path cum ar trebui să fie.

Comentarii

  • folosești Laravel 3 sau Laravel 4? –  > Por Laurence.
4 răspunsuri
Justin

Utilizați public_path()

Pentru referință:

// 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');

Comentarii

  • Doar pentru a adăuga că public_path() este, de fapt, destul de inutilă – presupune că toate fișierele publice se află într-un director numit „public” – chiar dacă nu sunt. De exemplu, întotdeauna trebuie să schimb directorul implicit „public” în „public_html” (în conformitate cu serverul meu). Laravel nu recunoaște acest lucru. Așa că nu vă bazați pe acest lucru pentru a determina în mod inteligent care este de fapt directorul dvs. public. Eu folosesc doar $_SERVER['DOCUMENT_ROOT']; cu excepția cazului în care cineva poate sugera de ce nu ar trebui să o fac? –  > Por Inigo.
  • @inigo nu este inutil, pur și simplu nu îl folosești așa cum a fost conceput. Dacă doriți să schimbați directorul de public, trebuie să îi spuneți lui Laravel despre asta: stackoverflow.com/questions/31758901/…  > Por Justin.
Laurence

Puteți utiliza base_path() pentru a obține baza aplicației dvs. – și apoi adăugați doar folderul public la acesta:

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

Notă: Fiți foarte atent când permiteți oamenilor să încarce fișiere în rădăcina dvs. de public_html. Dacă își încarcă propriul fișier index.php, vor prelua controlul asupra site-ului dvs.

Comentarii

  • este base_path definit în laravel .. l-am folosit am primit această eroare Call to undefined function base_path() –  > Por Yasser Moussa.
  • Da – este definită în helpers.php. Am testat în pe aplicația mea L4 – funcționează. Asigurați-vă că executați cea mai recentă versiune L4 – s-ar putea să nu fi fost în versiunile anterioare. –  > Por Laurence.
Brent

Știu că este un pic cam târziu, dar dacă altcineva se mai întâlnește cu acest aspect, puteți folosi acum public_path(); în Laravel 4, a fost adăugat la fișierul helper.php din dosarul de suport a se vedea aici.

GCT

Cel mai bun mod de a prelua calea folderului public din configurația Laravel este funcția:

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

Nu este necesar să aveți toate variabilele, dar acest lucru este doar în scop demonstrativ.

Sper că acest lucru vă ajută, GRnGC