2013-02-12 4 views
27

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

+0

вы используете Laravel 3 или 4 Laravel? – Laurence

+0

Я использую версию 4 –

ответ

87

Использования 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'); 
+0

Просто добавьте, что 'public_path()' на самом деле бесполезно - он просто предполагает, что все ваши общедоступные файлы находятся в каталоге под названием «public» - даже если это не так. Например, мне всегда приходится менять стандартный «общедоступный» каталог на «public_html» (в соответствии с моим сервером). Ларавел не признает этого. Поэтому не полагайтесь на это, чтобы сделать какое-либо разумное определение того, что на самом деле представляет ваш общий каталог. Я просто использую '$ _SERVER ['DOCUMENT_ROOT'];' если кто-нибудь не может предположить, почему я не должен? – Inigo

9

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

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

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

+1

base_path, определенную в laravel .. я использовал его, я получил эту ошибку. Вызов неопределенной функции base_path() –

+0

Да - это определено в helpers.php. Я тестировал приложение L4 - он работает. Убедитесь, что вы используете последнюю сборку L4 - возможно, она не была в более ранних версиях. – Laurence

10

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

3

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

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

Там нет необходимости иметь все переменные, но это только для демонстративных целей.

Надеется, что это помогает, GRnGC

 Смежные вопросы

  • Нет связанных вопросов^_^