Upgrading from 4.5.18 to 5 with a catch (subfolder)


I want to upgrade IN to the latest version but hitting a natural issue here.

My running IN path is like https://DOMAIN/invoiceninja/public/dashboard and it works perfectly for me as of now.

Because I want to upgrade, I open account management/migrate then click on start migrate which directs to https://DOMAIN/migration/start and naturally I just get plain Url not found there since there is nothing there and that is not an IN path.

I can manually rewrite the url to https://DOMAIN/invoiceninja/public/migration/start in the url bar and it works but just for that page, the next step it still redirects me to https://DOMAIN/migration/type

What are my options for properly migrating given I will still need to use v5 under a subpath.

I am using it under Apache/MariaDb on Debian.



To upgrade from v4 you need to install v5 as a separate app and then use the migration tool in the latest version of v4 on Settings > Account Management.

Did you read my post though? I am having an issue with urls not with the method.

I saw you were using 4.5.18, that version won’t work to migrate. You’ll need to update to the latest v4 version (4.5.42).


If you still see problems with that version I’m happy to help debug more.

Still that is not the issue. Maybe I did not articulate it well. This is not a version or migration method issue.

I am using subfolder on my server https://DOMAIN/invoiceninja. Invoiceninja migration tool seems to want to be served from the domain’s root. So the migration tool points to a non existing path once started, see my first post for the details.

@david do you have any thoughts?

1 Like

This issue sounds like a rewrite issue with Apache.

You’ll want to ensure your APP_URL is set correctly also to the full path.

1 Like


I already have it set to https://DOMAIN/invoiceninja/public in the system settings. Do I need to set it somewhere else as well?

it sounds like your V4 also needs to have its url include the public/ directory in the APP_URL

Which file is that one? I already have it set in .env as well and both APP_URL are identical and include the full path to public

This is the previous comment which caught my eye. If you have to manually insert /public either you have a rewrite issue, or your .env file does not contain /public in the URL.

1 Like

I upgraded to to 4.5.42 and the issue went away interestingly.

However I am hitting a new issue with installing V5. I am installing it under Apache and under a subpath.

I go through all the steps, all look good but when I click on submit in the end I just get a 404 instead of finishing the installation fully (I assume it would direct me to the login page). I see that it creates a new .env and it fills it properly.

so similar story to v4, you v5 URL path needs to contain the /public also.

It actually does

APP_URL=https://DOMAIN/invoiceninja/public (which I provided during the setup)

Is there any other place where this url is referenced from ? Maybe I need to edit those instances to make sure

Btw it also populated all the necessary tables, so my steps are not incorrect it seems.

The only error I can find is this in laravel.log Not sure if it matters at this point. There are not much else in the document.

There is also no error in the browser console beside that 404. I am not able to get clue on this.

[2021-07-03 04:57:11] production.INFO: db fails  
[2021-07-03 04:57:30] production.ERROR: CURL Error #60: SSL: no alternative certificate subject name matches target host name 'phantomjscloud.com'  
[2021-07-03 04:58:51] production.INFO: latest version = 5.2.7

So is there a manual way of upgrading from 4 to 5? I would love to upgrade and enjoy the new provided features, I am just stuck due to url rewiritng or whatever the underlying issue is.

@david is it now possible to manually copy over the zip file?

1 Like