Wie bekomme ich ein öffentliches Verzeichnis?


81

Ich bin ein Anfänger hier, also entschuldigen Sie mich für diese Frage, mit der ich return File::put($path , $data);eine Datei in einem öffentlichen Ordner auf Laravel erstelle. Ich habe diesen Code vom Controller verwendet. Ich muss wissen, $pathwie er sein soll.


Verwenden Sie Laravel 3 oder Laravel 4?
— Laurence

Antworten:


206

Verwenden public_path()

Als Referenz:

// 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
Nur um hinzuzufügen, dass dies public_path()eigentlich ziemlich nutzlos ist - es wird nur davon ausgegangen, dass sich alle Ihre öffentlichen Dateien in einem Verzeichnis namens "public" befinden - auch wenn dies nicht der Fall ist. Zum Beispiel muss ich immer das Standardverzeichnis "public" in "public_html" ändern (entsprechend meinem Server). Laravel erkennt das nicht. Verlassen Sie sich also nicht darauf, um intelligent zu bestimmen, was Ihr öffentliches Verzeichnis tatsächlich ist. Ich benutze nur, $_SERVER['DOCUMENT_ROOT'];wenn jemand vorschlagen kann, warum ich nicht sollte?
— Inigo

9
@inigo es ist nicht nutzlos, du benutzt es einfach nicht so wie es beabsichtigt war. Wenn Sie das Verzeichnis der Öffentlichkeit ändern möchten, müssen Sie Laravel darüber informieren
— Justin

17

Sie können base_path () verwenden, um die Basis Ihrer Anwendung abzurufen - und dann einfach Ihren öffentlichen Ordner hinzufügen:

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

Hinweis: Seien Sie sehr vorsichtig, wenn Sie zulassen, dass Benutzer Dateien in Ihr Stammverzeichnis von public_html hochladen. Wenn sie ihre eigene index.php-Datei hochladen, übernehmen sie Ihre Site.


1
ist base_path in laravel definiert .. ich habe es benutzt ich habe diesen Fehler erhalten Aufruf der undefinierten Funktion base_path ()
— Yasser Moussa

Ja - es ist in helpers.php definiert. Ich habe meine L4-App getestet - es funktioniert. Stellen Sie sicher, dass Sie den neuesten L4-Build ausführen - möglicherweise nicht in früheren Versionen.
— Laurence

11

Ich weiß, dass dies etwas spät ist, aber wenn jemand anderes auf dieses Aussehen stößt, können Sie jetzt public_path () verwenden. In Laravel 4 wurde es der Datei helper.php im Support-Ordner hinzugefügt ( siehe hier) .


6

Der beste Weg, um Ihren Pfad für öffentliche Ordner aus Ihrer Laravel-Konfiguration abzurufen, ist die folgende Funktion:

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

Es müssen nicht alle Variablen vorhanden sein, dies dient jedoch nur zu Demonstrationszwecken.

Hoffe das hilft, GRnGC

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.