Running Laravel Lumen from sub-directory

Lumen is the new micro framework from laravel, you can found more info here : Lumen Website.

I ran lumen without homestead, just plain apache. After opening the /public folder i got this error :

Route not found :(

Next, i try to run lumen with php artisan serve, and its work 😀

I’am curious, so i dig into the lumen framework bootstraper. If you open public/index.php, it will trigger $app->run(). The app is instance of Laravel\Lumen\Application and you can find the source on vendor/laravel/lumen-framework/src/Application.php.

the run method in turn will call dispatch :

From the code we can infer that if no request object is pass (default is null) then lumen will try to get the path info from its own method. In my case, if we run Lumen from sub directory, the path will be absolute path from your server hostname. Which lead to route not found problem.

My solution for this is to create Symfony request object on public/index.php

Thats all, it work on my case. Hope this work on yours too !

  • Andrey Sokolov

    Thanks, you solved my problem ^_^

    • Todi Adiyatmo

      glad to hear that !

  • someone

    TYSVM!!!!!!

  • Krik Batner

    Thanks for this! Couldn’t figure this out for the life of me!

  • mattgreen110

    Thank you so much for this!

  • thx

    very usefull. thank you for that post. wish that was mentioned in the lumen documentation

    • thx

      Just a note – when doing anything usefull you might encounter an error like
      “must be an instance of IlluminateHttpRequest, instance of SymfonyComponentHttpFoundationRequest” with this fix.

      That can be solved by using

      IlluminateHttpRequest instead of SymfonyComponentHttpFoundationRequest

      and use Request::capture(); instead of Request::createFromGlobals();

  • http://www.pladevia.com ask a lawyer

    They should add your article…I spend almost 2~3 hours try to fix this by changing the .htaccess

  • http://www.whois-ip.xyz expired domains with traffic

    it works, thanks

  • tripper54

    Thank you, this is the best solution I’ve seen!

  • Ibrahim Lawal

    Awesome solution.

    For Lumen 5.3, this will fail, so any one trying this now should use “IlluminateHttpRequest” instead of “SymfonyComponentHttpFoundationRequest”

    Hope this helps someone