Есть целый ряд решений, как изменения в index.php или принятой один с IoC контейнера.
Решение, которое работает лучше всего, на мой взгляд, описанный в этом СЦ вопрос: Laravel 5 change public_path()
Почему это лучше, чем другие решения? Потому что он работает для обычного запроса http, использования ремесленника и использования phpunit для тестирования! Например. изменение в index.php работает только для http-запросов, но приводит к ошибкам при использовании PHPunit (в моем случае: файл (...) не определен в манифесте актива).
Краткое повторение этого решения: Шаг 1: В файле: самозагрузки/app.php изменить самую первую декларацию переменной $ приложения от:
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
к:
$app = new App\Application(
realpath(__DIR__.'/../')
);
Это указывает на ваш собственный класс приложений, который мы создадим на этапе 2.
Шаг 2: Создайте файл Application.php в папке приложения:
<?php namespace App;
class Application extends \Illuminate\Foundation\Application
{
public function publicPath()
{
return $this->basePath . '/../public_html';
}
}
Не забудьте изменить путь к вашим потребностям. В этом примере предполагается структура каталогов следующим образом:
оо laravel_app
°°°° приложение
°°°° самозагрузки
°°°° конфигурации
°°°° ...
оо public_html
в случае ОП, путь должен быть, вероятно,
return $this->basePath . '/../www/public';
(вверх по одному от laravel_app, затем вниз на www/public)
Можете ли вы сказать, где разместить этот код? – johnnydoe82
Service proivder - лучший способ сделать это, я думаю – mcklayin
Какой файл над кодом нужно разместить, пожалуйста, отправьте полное решение – Marwan