Я начинаю здесь, поэтому простите меня за этот вопрос, используя return File::put($path , $data);
, чтобы создать файл в общей папке на Laravel. Я использовал этот кусок кода от контроллера. Мне нужно знать значение $path
, как это должно быть.Как получить общедоступный каталог?
ответ
Использования 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');
Просто добавьте, что 'public_path()' на самом деле бесполезно - он просто предполагает, что все ваши общедоступные файлы находятся в каталоге под названием «public» - даже если это не так. Например, мне всегда приходится менять стандартный «общедоступный» каталог на «public_html» (в соответствии с моим сервером). Ларавел не признает этого. Поэтому не полагайтесь на это, чтобы сделать какое-либо разумное определение того, что на самом деле представляет ваш общий каталог. Я просто использую '$ _SERVER ['DOCUMENT_ROOT'];' если кто-нибудь не может предположить, почему я не должен? – Inigo
Вы можете использовать базовый_путь(), чтобы получить базу вашего приложения - а затем просто добавить общую папку в том, что:
$path = base_path().'/public';
return File::put($path , $data)
Примечание: Будьте очень осторожны позволяет людям загружать файлы в ваш root из public_html. Если они загружают свой собственный файл index.php, они захватят ваш сайт.
base_path, определенную в laravel .. я использовал его, я получил эту ошибку. Вызов неопределенной функции base_path() –
Да - это определено в helpers.php. Я тестировал приложение L4 - он работает. Убедитесь, что вы используете последнюю сборку L4 - возможно, она не была в более ранних версиях. – Laurence
Я знаю, что это немного поздно, но если кто-то еще сталкивается с этим взглядом, теперь вы можете использовать public_path(); в Laravel 4, он был добавлен в файл helper.php в папке поддержки see here.
Лучший способ получить свой путь к общим папкам из вашей Laravel конфигурации функция:
$myPublicFolder = public_path();
$savePath = $mypublicPath."enter_path_to_save";
$path = $savePath."filename.ext";
return File::put($path , $data);
Там нет необходимости иметь все переменные, но это только для демонстративных целей.
Надеется, что это помогает, GRnGC
вы используете Laravel 3 или 4 Laravel? – Laurence
Я использую версию 4 –