tixelrocks / long-env
一个辅助函数,用于支持长环境变量(例如AWS)
0.4
2024-09-16 14:33 UTC
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-09-16 14:34:57 UTC
README
一个替代 env() 的函数,可以在无法原生处理长多行环境变量的情况下使用(例如AWS Elastic Beanstalk)
想象一下,你想要在AWS上运行Laravel Passport,你需要将你的私钥作为 PASSPORT_PRIVATE_KEY 环境变量传递,但是嘿,1) AWS 不允许多行环境变量 2) AWS 每个环境变量字符限制为4096个。
所以你最终得到了一个令人烦恼的错误,如下所示
Service:AmazonCloudFormation, Message:Template format error: Parameter 'EnvironmentVariables' default value '[****]' length is greater than 4096.
解决方案
我们的解决方案很简单,前往 config/passport.php
并将其替换为
<?php return [ 'private_key' => env('PASSPORT_PRIVATE_KEY') ];
return [ 'private_key' => long_env('PASSPORT_PRIVATE_KEY') ];
现在,通过编号块传递你的长变量,而不是一个超级长的字符串
PASSPORT_PRIVATE_KEY1=
PASSPORT_PRIVATE_KEY2=
PASSPORT_PRIVATE_KEY3=
# and so on
long_env()
函数将神奇地将它们组合在一起。如果你需要帮助制作块,只需使用本包提供的 long_env_prepare()
函数即可
<?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" }
就这样 - 逐个复制粘贴到你的仪表板中(例如AWS Elastic Beanstalk的配置选项卡)