a1comms/gae-support-laravel

This package is abandoned and no longer maintained. The author suggests using the affordablemobiles/g-serverless-support-laravel package instead.

Google App Engine Standard Environment runtime support for Laravel apps

Maintainers

👁 iamacarpet

Package info

github.com/affordablemobiles/GaeSupportLaravel

pkg:composer/a1comms/gae-support-laravel

Statistics

Installs: 7 684

Dependents: 0

Suggesters: 0

Stars: 25

Open Issues: 0

v9.0.42 2023-12-05 13:30 UTC

MIT faea11f8b7395ed39bb430e2abb8c0db21105e6f

  • Samuel Melrose <sam.melrose.woop@a1comms.com>

This package is auto-updated.

Last update: 2024-05-01 14:37:50 UTC


README

Google App Engine (GAE) Standard Environment support package for Laravel 9.x.

👁 Latest Stable Version
👁 Monthly Downloads
👁 Total Downloads
👁 Latest Unstable Version
👁 License

Based on original work for App Engine Standard (on the PHP5.5 runtime) by @shpasser https://github.com/shpasser/GaeSupportL5

Note: we only intend to support Laravel LTS releases, with this version targeted specifically at Laravel 9.x

Functionality

Installation

Pull in the package via Composer:

"require": {
 "a1comms/gae-support-laravel": "~9.0"
}

Laravel Specific (Not Lumen)

1. Add the following to composer.json:

 "scripts": {
 "post-autoload-dump": [
 "php artisan gae:prepare"
 ]
 },

2. For Laravel, include the service provider within config/app.php:

 'providers' => [
 A1comms\GaeSupportLaravel\GaeSupportServiceProvider::class,
 ];

3. Also, for added functionality, include the optional service providers:

 'providers' => [
 A1comms\GaeSupportLaravel\Auth\AuthServiceProvider::class,
 A1comms\GaeSupportLaravel\View\ViewServiceProvider::class,
 A1comms\GaeSupportLaravel\Queue\QueueServiceProvider::class,
 A1comms\GaeSupportLaravel\Trace\TraceServiceProvider::class,
 ];

And remove the relevant Laravel service providers that these replace:

 'providers' => [
 //Illuminate\View\ViewServiceProvider::class,
 //Illuminate\Queue\QueueServiceProvider::class,
 ];

4. Update bootstrap/app.php to load the overridden application class & initialise logging to Stackdriver:

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

$app = new A1comms\GaeSupportLaravel\Foundation\Application(
 $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

5. Update app/Exceptions/Handler.php to enable proper Exception logging to StackDriver Error Reporting & Logging:

Change the following use statement:

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

To our class, that'll inject the required logging hook:

use A1comms\GaeSupportLaravel\Foundation\Exceptions\Handler as ExceptionHandler;

6. In config/logging.php, configure a custom logger and set it as the default:

It's also useful to set the emergency log path to a location App Engine will forward to Stackdriver Logging, see below.

<?php

use A1comms\GaeSupportLaravel\Log\CreateLoggingDriver;

return [
 
 'default' => 'gae',

 'channels' => [
 'gae' => [
 'driver' => 'custom',
 'via' => CreateLoggingDriver::class,
 ],

 'emergency' => [
 'path' => '/var/log/emergency.log',
 ],
 ],

];

7. In .env, set the following:

QUEUE_CONNECTION=gae
CACHE_DRIVER=array
SESSION_DRIVER=gae
LOG_CHANNEL=gae

Lumen Specific (Not Laravel)

1. Update bootstrap/app.php to load the overridden application class

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/

$app = new A1comms\GaeSupportLaravel\Foundation\LumenApplication(
 $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);

2. Update app/Exceptions/Handler.php to enable proper Exception logging to StackDriver Error Reporting & Logging:

Change the following use statement:

use Laravel\Lumen\Exceptions\Handler as ExceptionHandler;

To our class, that'll inject the required logging hook:

use A1comms\GaeSupportLaravel\Foundation\Exceptions\LumenHandler as ExceptionHandler;

Upgrading (from Laravel/Lumen 6.x LTS)

Laravel Specific (Not Lumen)

1. Update the package version in composer.json:

"require": {
 "a1comms/gae-support-laravel": "~9.0"
}

2. Follow the Laravel upgrade steps for all versions 6.x ... 9.x

Lumen Specific (Not Laravel)

1. Update the package version in composer.json:

"require": {
 "a1comms/gae-support-laravel": "~9.0"
}

2. Follow the Lumen upgrade steps for all versions 6.x ... 9.x