Deploying your Laravel Project to 000webhost
(Tested for Laravel 5.6)
Hi everyone! This tutorial will help you deploy your Laravel project into your 000webhost site in a professional manner. Unfortunately free plans do not allow SSH connections, therefore we’ll use primitive methods for setup.
1. Uploading.
Before we start, your website must be ‘clean’. It must not contain a single file in it, that to prevent interface with Laravel. Please back up your current website content and database, then go to 000webhost cPanel (choose the website you want to work with) > Settings > General > Reset website. After you’re done, you can continue further
Laravel contains a lot of files and folders, especially in /vendor
directory. If we would attempt to upload every file manually either over FTP either over our built-in File Manager it would take a lifetime.
Having that said, the best way to quickly upload your Laravel project to 000webhost is to: archive it, upload the archived content, extract it, and then apply whatever changes are necessary.
-
Go to the root of your Laravel project:
-
Select all files, folders (except
node_modules
) and ZIP them:
-
Make sure the archiving method is ZIP. 000webhost can’t extract RAR archives.
-
Zipping process can take a while. After it is done, make sure you have the following output file:
-
Now go to File Manager and upload the newly created archive:
-
After file has been uploaded, right click on it and hit ‘Extract’:
That’s it! You have uploaded your project to 000webhost
2. Setting up the environment.
You have successfully uploaded your project to 000webhost. However your application is not ready yet. You’ll have to move on with further configuration.
-
Moving folders to appropriate path
The entire application alongside Laravel System itself is not accessible to the public. It must not stay in/public_html
; that’s is not the way it supposed to work. We should move the entire Project to the root path of our website:
Make sure the destination is:/
-
Configuring the public path
Great, we have migrated the entire project from frontend to backend! However 000webhost’s public path is/public_html
and Laravel’s default public path is/public
…
A. Remove the current/public_html
. We don’t need it.
B. Rename/public
to/public_html
C. Go to/app/Providers/AppServiceProvider.php
and append the following code toregister()
method:
$this -> app -> bind('path.public', function()
{
return base_path('public_html');
});
-
Integrate application in new environment
Almost done. Now we need to set up the configuration. And remove previous cache so that Laravel will behave normally in the new environment.
A. Locate.env
file. Open it.
B. Copy the the value ofAPP_KEY
without ‘base64:
’
C. Go to/config/app.php
, locate ‘key
’ and update its value to yourAPP_KEY
according to the image:
D. (optional) If you have a database, update the database credentials in/config/database.php
with the ones from 000webhost cPanel > Manage databases:
E. Clear old Laravel cache: Delete all files from/bootstrap/cache
except.gitignore
3. The end.
That’s it! You have successfully deployed your Laravel project.
For any further questions please check our FAQ section or open a new topic and we’ll discuss.
FAQ.
-
I am receiving
Wrong COM_STMT_PREPARE response size. Received 7
error.
Please go to/config/database.php
and append the following line of code to your database connection configuration:'options' => [PDO::ATTR_EMULATE_PREPARES => true,],
-
I have deployed my project but I am still receiving
Error 500/Something went wrong/Exception
. What should I do?
Please go to/config/app.php
atdebug
vector and set the value totrue
. Now access the URL which is giving errors and start tracking the bugs. -
Why does the configuration from
.env
is not loaded automatically?
Mainly said, Laravel usesputenv()
to retrieve the variables from.env
file and store them as PHP environment variables.putenv()
has been disabled on 000webhost for security reasons. Your remaining choice is to update the configuration into/config/[...]
manually. -
How to use Composer via SSH to manage my dependencies?
Free plans do not allow SSH connections to your websites. Paid plans do. You may purchase an affordable one here.