16 Jun 2018
cat: Laravel, PHP

Upload Laravel Codes on a Shared Hosting


For some reason you want to upload Laravel codes on a shared hosting. Maybe just to upload a sample application, a prototype, or you don’t want to use a cloud based hosting like Digital Ocean and find a cheaper hosting. In this tutorial we will  go through the steps on how to upload a Laravel Application to a cPanel.


First is to zip the necessary files. Using FTP application to upload codes takes a lot of time if not zipped. There are also some files and folder you can exlude.

  • app
  • bootstrap
  • config
  • database
  • node_modules – Most likely you are compiling using Gulp, Laravel Elixir, or Laravel Mix so you can just exclude this folder.
  • public – Exlude this since files from here will be just copied to public_html (sub-domain directory if you are uploading to sub-domain).
  • resources
  • routes
  • storage
  • tests – You can ignore this.
  • vendor
  • .env
  • .env.example – You can ignore this.
  • .gitattributes – You can ignore this.
  • .gitignore – You can ignore this.
  • artisan – You can ignore this.
  • composer.json – You can ignore this.
  • composer.lock – You can ignore this.
  • package.json – You can ignore this.
  • package-lock.json – You can ignore this.
  • phpunit.xml – You can ignore this.
  • readme.md – You can ignore this.
  • server.php – You can ignore this.
  • webpack.mix.js – You can ignore this.

After zipping these necessary files, upload it using FTP. You can just upload all of it inside public_html but I prefer uploading it outside like below.

  • (other files/folders)
  • myapp.zip
  • myapp (after extracting)
  • public_html
  • (other files/folders)

We can now start working on the public folder of Laravel. Before we upload the public files, we need to edit the index.php.

error_reporting(E_ALL); ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE);

 * Laravel - A PHP Framework For Web Artisans
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>

define('LARAVEL_START', microtime(true));

| Register The Auto Loader
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
$path = dirname(__DIR__);

require $path.'/vendor/autoload.php';

| 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 $path.'/bootstrap/app.php';

$app->bind('path.public', function() {
    return __DIR__;

| Run The Application
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()


$kernel->terminate($request, $response);

Notes on the highlighted lines. Make sure the $path variable is set to where the laravel files are located. The $app->bind... codes tells laravel where is the public directory (public_html where index.php currently resides).

That is it. You should be able to load your website on the browser.

Thanks for reading!

Be the first to write a comment.

Post A Comment