Есть ряд решений, например, изменение index.php или принятое решение с контейнером ioc.
На мой взгляд, решение, которое работает лучше всего, описано в этом вопросе SO: Laravel 5 change public_path ( )
Почему это лучше других решений? Поскольку он работает с обычным HTTP-запросом, используйте ремесленник и использование phpunit для тестирования! Например. изменение index.php работает только для HTTP-запросов, но приводит к сбоям при использовании PHPunit (в моем случае: file (...) не определен в манифесте ресурса).
Краткое описание этого решения: Шаг 1: В файле: bootstrap / app.php измените самое первое объявление переменной $ app с:
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
to:
$app = new App\Application(
realpath(__DIR__.'/../')
);
Это указывает на ваш собственный класс Application, который мы создадим на шаге 2.
Шаг 2: Создайте файл Application.php в папке приложения:
<?php namespace App;
class Application extends \Illuminate\Foundation\Application
{
public function publicPath()
{
return $this->basePath . '/../public_html';
}
}
Обязательно измените путь под свои нужды. Пример предполагает такую структуру каталогов:
°° laravel_app
°°°° приложение
°°°° bootstrap
°°°° config
°°°° ... < br> °° public_html
В случае OP путь, вероятно, должен быть
return $this->basePath . '/../www/public';
(вверх на один от laravel_app, затем вниз на www / public)
person
mcProgrammer
schedule
22.09.2016