Laravel announced today that they are launching a new PHP framework named Lumen for building API’s and microservices. It has an emphasis on speed and it is compatible with a subset of Laravel, making for easy migrations to the larger framework.
I wanted to see how easy it would be to run a Lumen app on App Engine, and I fooled around with it a bit. You just do a simple setting in app.yaml to route all of the apps traffic to the default handler for the Lumen app:
application: [your application id] version: one runtime: php55 api_version: 1 handlers: - url: /.* script: /[path_to_lumen_folder]/public/index.php
With that I got a basic instance running. I did run into one problem though. The logger tried to write to disk, which is a no-no for App Engine. If this happens you will get an error like this:
Fatal error: Uncaught exception 'UnexpectedValueException' with message 'The stream or file "[Path to your lumen app]/storage/logs/lumen.log" could not be opened
One little configuration tweak got it working though. In [path to your lumen app ]vendor/laravel/lumen-framework/src/Application.php, you have to tweak the logger a bit.
First you add a reference to the right library:
use MonologHandlerSyslogHandler;
And then replace the function getMonologHandler() with this:
protected function getMonologHandler() { return new SyslogHandler('intranet', 'user', Logger::DEBUG, false, LOG_PID); }
This advice was taken from the guide for Laravel on PHP for App Engine.
All in all, it is a relatively quick little framework, and having using App Engine to scale out the services it provides seems like a no-brainer.
All code shown here is licensed under Apache 2. For more details find the original source on Github.