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 servestill 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.