platformsh / laravel-bridge
在 Platform.sh 上运行 Symfony Flex 的桥梁库
Requires
- php: >=7.2
- platformsh/config-reader: ^2.4.0
Requires (Dev)
- phpunit/phpunit: ^8.5
README
这个简单的桥梁库将基于 Laravel 的应用程序连接到 Platform.sh。在典型情况下,它应该完全是一次性设置。
Laravel 偏好通过具有特定名称和格式的环境变量来接收所有配置。Platform.sh 以不同的特定格式提供配置信息作为环境变量。这个库负责将 Platform.sh 变量映射到 Laravel 期望的常见值格式。
使用方法
只需使用 Composer 需求这个包。当包含 Composer 的自动加载时,这个库将被激活,并设置环境变量。只要在 Laravel 配置引导之前完成(它几乎肯定会这样做),一切都应该正常工作,无需进一步的用户交互。
composer require platformsh/laravel-bridge
注意,在更新此包后,请确保在相关的 platform.sh 环境中清除缓存。
php artisan cache:clear
执行映射
-
如果定义了一个名为
database的 Platform.sh 关系,它将被视为 SQL 数据库,并映射到 Laravel 的DB_*环境变量。 -
如果定义了一个名为
rediscache的 Platform.sh 关系,它将被映射到 Laravel 的REDIS_*环境变量。此外,CACHE_DRIVER(Laravel v10 及以下)和CACHE_STORE(Laravel v11+)变量将被设置为redis以自动激活它。 -
如果定义了一个名为
redissession的 Platform.sh 关系,SESSION_DRIVER将设置为redis,并基于该关系设置REDIS_*变量。注意:这意味着您必须将 2 个关系设置为相同的 Redis 服务和端点,因为 Laravel 重复使用相同的后端连接。 -
Laravel 的
APP_KEY是基于PLATFORM_PROJECT_ENTROPY变量设置的,该变量正是为此目的提供的。 -
Laravel 的
APP_URL变量将基于可能的当前路由设置。 -
如果尚未定义,将
SESSION_SECURE_COOKIE变量设置为 true。Platform.sh 环境默认为始终加密,因此没有理由允许未加密的cookie。可以通过将 Platform.sh 变量env:SESSION_SECURE_COOKIE设置为 0 来覆盖此设置。 -
MAIL_DRIVER、MAIL_HOST和MAIL_PORT变量被设置为支持通过 Platform.sh 邮件网关发送电子邮件。此外,MAIL_ENCRYPTION值也被设置为0以禁用 TLS,因为在 Platform.sh 的网络中不需要或不受支持。请注意,这样做仅受 Laravel 6.0.4 及更高版本支持。在较早版本中,您必须手动修改mail.php并将encryption设置为null。
'encryption' => null,
未设置的环境变量
Laravel 已经为许多环境变量提供了合理的默认值,并且此库不会覆盖它们。但是,可以通过设置名为 env:ENV_NAME 的 Platform.sh 变量来自定义它们。(注意 env: 前缀。)以下列出了一些最有可能被覆盖的变量,以方便起见:
env:APP_NAME:应用程序的人类友好名称。env:APP_ENV:应用程序是否在production或development模式下。env:APP_DEBUG:设置为 true 以启用详细错误消息。