Most shared host use public_html
instead of public
,
While sometimes considered bad practice, some client may force you to drop-in everything via FTP
There are several ways to change public folder name found on Google.
But most of them won’t work perfectly.
- In AppServiceProvider.php, bind ‘path.public’ to IoC container
Won’t work in console, vendor:publish still publish in public path - In index.php, bind ‘path.public’ to IoC container
Works in console, butartisan serve
still won’t work
After dig down deep in the source code, I found the cause:
The publicPath()
method in Illuminate\Foundation\Application
is hardcoded.
public function publicPath() { return $this->basePath.DIRECTORY_SEPARATOR.'public'; }
But we should never hard the core, so let’s override this method on our own class.