Changing the storage path in Laravel Lumen

Let me first explain why I needed this. I was using Otto, which is basically a fancy way of setting up a development environment. If you want to read upon Otto, be my guest: https://ottoproject.io/. It is using Vagrant underneath to set up it’s environment. I decided to make a simple Laravel Lumen API, which would be running on that virtual machine created by Otto.

So my situation was as follows:

I had a local development folder (repo) which was mounted on the development machine as a shared folder. Now here comes the problem: the folder was made by setting the folder owner and group to the vagrant. Once I ssh’ed into the machine, I couldn’t change the owner storage folder used by Laravel. When I ran the command:

sudo chown -R www-data:www-data storage/

The user and group of the folder just simply wouldn’t change. So I decided I needed another storage location where folder owner and group can be set using chown. Therefore I made a folder inside /var/www.

sudo mkdir /var/www/

Then I copied the storage folder in the Laravel Lumen project to this directory. In here I could set the owner to www-data. Only one problem was left. Lumen didn’t know where to look for the updated storage folder. You need to tell this to the framework.

So I was looking in the source code of Lumen and then I found this function: useStoragePath(). So what I did next is opening up – in your Lumen project – bootstrap/app.php and nearly at the end if the file I added:

$app->useStoragePath(‘/var/www/storage’);

This was all you need to do in order to update your Lumen storage location.