tixelrocks / long-env
A helper function that adds support for long environment variables (eg for AWS)
Installs: 8 346
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=5.5.0
- illuminate/support: 5.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- phpoption/phpoption: ^1.7
- vlucas/phpdotenv: ^5.3
Requires (Dev)
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-11-16 14:50:04 UTC
README
An env() alternative that works with long multi-line environment variables in places where it's not possible to do so natively - eg. AWS Elastic Beanstalk
Imagine you want to run Laravel Passport in AWS so you need to pass your private key as a PASSPORT_PRIVATE_KEY environment variable but hey 1) AWS doesn't allow multi-line environment variables 2) AWS has a limit of 4096 character per environment variable.
So you end up getting an annoying error like this:
Service:AmazonCloudFormation, Message:Template format error: Parameter 'EnvironmentVariables' default value '[****]' length is greater than 4096.
Solution
Our solution is simple, go to config/passport.php
and replace
<?php return [ 'private_key' => env('PASSPORT_PRIVATE_KEY') ];
with:
return [ 'private_key' => long_env('PASSPORT_PRIVATE_KEY') ];
And now pass your long variable as numbered chunks instead of one super long string:
PASSPORT_PRIVATE_KEY1=
PASSPORT_PRIVATE_KEY2=
PASSPORT_PRIVATE_KEY3=
# and so on
The long_env()
function will magically combine them together for you. If you need help making the
chunks, just use the long_env_prepare()
function provided with this package:
<?php json_encode(long_env_prepare('KEY', 'SUPER LONG STRING'), JSON_PRETTY_PRINT);
{ "KEY1": "-----BEGIN PRIVATE K", "KEY2": "EY-----\ndasokd aoskd", "KEY3": "o aksdoaskd oaskdo a" }
That's it - copy & paste these one by one into your dashboard (eg. AWS Elastic Beanstalk's Configuration tab)