パブリックディレクトリを取得する方法は?


90

私はここでは初心者なのでreturn File::put($path , $data);、Laravelのパブリックフォルダーにファイルを作成するために使用しているこの質問についてはご容赦ください。私はコントローラーからこのコードを使用しましたが、$pathそれがどうあるべきかという価値を知る必要があります。


Laravel3またはLaravel4を使用していますか?
ローレンス

回答:


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」に変更する必要があります(サーバーに合わせて)。Laravelはこれを認識しません。したがって、これに依存して、パブリックディレクトリが実際に何であるかをインテリジェントに判断しないでください。$_SERVER['DOCUMENT_ROOT'];なぜ私がすべきでないのか誰かが提案できない限り、私はただ使っていますか?
イニゴ2017年

9
@inigoそれは役に立たないわけではなく、意図したとおりに使用していないだけです。あなたが公共のディレクトリを変更したい場合は、それについてLaravelを伝える必要があります:stackoverflow.com/questions/31758901/...
ジャスティン

18

base_path()を使用してアプリケーションのベースを取得し、パブリックフォルダーをそれに追加するだけです。

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

注:public_htmlのルートにファイルをアップロードできるよう注意してください。彼らが彼ら自身のindex.phpファイルをアップロードするならば、彼らはあなたのサイトを引き継ぎます。


1
laravelで定義されたbase_pathです..使用しましたこのエラーが発生しました未定義の関数base_path()の呼び出し
Yasser Moussa

はい-helpers.phpで定義されています。L4アプリでテストしました-動作します。最新のL4ビルドを実行していることを確認してください。以前のバージョンにはなかった可能性があります。
ローレンス

11

これは少し遅れていることはわかっていますが、他の誰かがこの外観に出くわした場合は、public_path()を使用できます。Laravel 4では、サポートフォルダーの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.