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 以启用详细错误消息。