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.

Yasser Moussa
quelle
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');
Justin
quelle
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.

Laurence
quelle
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) .

Brent
quelle
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

GCT
quelle