Как изменить общую папку на public_html в laravel 5

Я использую общий хостинг, который использует cPanel в качестве панели управления, а внутри cPanel public_html является корневым каталогом по умолчанию, из-за этого я не могу нормально работать с приложением Laravel.

Есть ли способ заставить Laravel использовать public_html вместо public_html папки?

Довольно легко найти это с помощью простого поиска.

См .: https://laracasts.com/discuss/channels/general-discussion/where-do-you-set-public-directory-laravel-5

В index.php добавьте следующие 3 строки.

 /* |-------------------------------------------------------------------------- | Turn On The Lights |-------------------------------------------------------------------------- | | We need to illuminate PHP development, so let us turn on the lights. | This bootstraps the framework and gets it ready for use, then it | will load up this application so that we can run it and send | the responses back to the browser and delight our users. | */ $app = require_once __DIR__.'/../bootstrap/app.php'; // set the public path to this directory $app->bind('path.public', function() { return __DIR__; }); 

Редактировать:


Как отметил Бурак Эрдем, другой вариант (и более предпочтительный) заключается в том, чтобы поместить это в метод \App\Providers\AppServiceProvider register() .

 /** * Register any application services. * * @return void */ public function register() { // ... $this->app->bind('path.public', function() { return base_path('public_html'); }); } 

Если решение index.php Robert не работает для вас, вы также можете зарегистрировать следующий код в Application Service Provider (App\Providers\AppServiceProvider.php) .

 <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; public function register() { $this->app->bind('path.public', function() { return base_path().'/public_http'; }); } 

Для тех, кому необходимо изменить общедоступный путь, чтобы он также был доступен для Artisan, добавьте следующее к bootstrap/app.php сразу после последнего метода singleton :

 $app->bind('path.public', function () { return base_path("<your public directory name>"); }); 

Это не так просто, как привязка. Самый чистый и более подробный ответ предоставляется ferroho здесь https://laracasts.com/discuss/channels/general-discussion/where-do-you-set-public-directory-laravel-5

Но самый быстрый ответ – создать символическую ссылку с именем public, указывающую на public_html, и поместить ваш index.php в последнюю.

Я решил эту проблему, используя .htaccess после очень долгого времени. Следуйте этим двум шагам

  1. Создайте файл .htaccess в public_html
  2. Вставьте код ниже в .htaccess

    RewriteEngine On RewriteRule ^ (. *) $ Public / $ 1 [L]