Как получить публичный каталог?

Я здесь новичок, поэтому извините меня за этот вопрос, я использую return File::put($path , $data); для создания файла в общей папке на Laravel. Я использовал этот фрагмент кода из контроллера, мне нужно знать значение $path, каким оно должно быть.


person Yasser Moussa    schedule 12.02.2013    source источник
comment
вы используете Laravel 3 или Laravel 4?   -  person Laurence    schedule 12.02.2013


Ответы (4)


Используйте 1_

Для справки:

// 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');
person Justin    schedule 02.05.2014
comment
Просто добавлю, что public_path() на самом деле довольно бесполезен — он просто предполагает, что все ваши общедоступные файлы находятся в каталоге с именем public — даже если это не так. Например, мне всегда приходится менять публичный каталог по умолчанию на public_html (в соответствии с моим сервером). Laravel этого не распознает. Поэтому не полагайтесь на это, чтобы сделать какое-либо разумное определение того, что на самом деле представляет собой ваш общий каталог. Я просто использую $_SERVER['DOCUMENT_ROOT'];, если кто-нибудь не подскажет, почему мне не следует? - person Inigo; 21.10.2017
comment
@inigo это не бесполезно, вы просто не используете его по назначению. Если вы хотите изменить каталог public, вам нужно сообщить об этом Laravel: =google_rich_qa" title="laravel 5 изменить общедоступный путь"> stackoverflow.com/questions/31758901/ - person Justin; 03.05.2018

Вы можете использовать base_path() для получения базы вашего приложения, а затем просто добавить к ней свою общую папку:

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

Примечание. Будьте очень осторожны, позволяя людям загружать файлы в корневой каталог public_html. Если они загрузят свой собственный файл index.php, они захватят ваш сайт.

person Laurence    schedule 12.02.2013
comment
base_path определен в laravel .. я использовал его, я получил эту ошибку Вызов неопределенной функции base_path() - person Yasser Moussa; 12.02.2013
comment
Да - это определено в helpers.php. Я протестировал свое приложение L4 - оно работает. Убедитесь, что вы используете последнюю сборку L4 — ее может не быть в более ранних версиях. - person Laurence; 12.02.2013

Я знаю, что это немного поздно, но если кто-то еще наткнется на это, теперь вы можете использовать public_path(); в Laravel 4 он был добавлен в файл helper.php в папке поддержки см. здесь.

person Brent    schedule 05.05.2013

Лучший способ получить путь к общедоступной папке из конфигурации Laravel — это функция:

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

Нет необходимости иметь все переменные, но это просто для наглядности.

Надеюсь, это поможет, GRnGC

person GCT    schedule 27.02.2014