Як отримати загальний каталог?


90

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


ви використовуєте Laravel 3 або Laravel 4?
Лоуренс

Відповіді:


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_html" (відповідно до мого сервера). Ларавел цього не визнає. Тож не покладайтесь на це для будь-якого розумного визначення того, що насправді є вашим загальнодоступним каталогом. Я просто використовую, $_SERVER['DOCUMENT_ROOT'];якщо ніхто не може підказати, чому я не повинен?
Ініго,

9
@inigo це не марно, ви просто використовуєте його не так, як було задумано. Якщо ви хочете змінити каталог загальнодоступних, вам потрібно повідомити про це Laravel: stackoverflow.com/questions/31758901/…
Джастін,

18

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

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

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


1
є base_path, визначений у laravel .. я ним скористався, отримав цю помилку Виклик невизначеної функції base_path ()
Ясер Мусса

Так - це визначено в 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.