Skip to content

Laravel - 配置

Laravel 框架的所有配置文件都存储在 config 目录下。每个选项都有详细的文档说明,您可以随意查看这些文件并熟悉可用的选项。这些文件允许您配置诸如数据库连接、邮件驱动、Session 存储、缓存等。

Laravel 广泛使用环境变量,主要通过应用程序根目录下的 .env 文件进行管理。这个文件允许您根据应用程序运行的环境(例如:本地开发、staging、生产环境)设置不同的配置值。

安装 Laravel 时,会包含一个 .env.example 文件。您应该将此文件重命名为 .env,或者将其内容复制到一个新的 .env 文件中。这个 .env 文件不应提交到应用程序的源代码控制(source control)中,因为每个开发者/服务器可能需要不同的环境配置。

  • 权限(Permissions): 安装 Laravel 后,您可能需要配置一些权限。storage 目录和 bootstrap/cache 目录下的子目录必须对您的 Web 服务器可写,否则 Laravel 将无法运行。如果您使用的是像 Laravel Sail 这样的本地开发环境,这些权限通常会自动为您处理。
  • 应用密钥(Application Key): 接下来要做的事情是将您的应用密钥设置为一个随机字符串。如果您是通过 Composer 或 Laravel 安装器安装的 Laravel,这个密钥可能已经由 php artisan key:generate 命令为您设置好了。这个密钥存储在 .env 文件中的 APP_KEY 环境变量中。它用于加密(encryption)和散列(hashing),因此对于安全性至关重要。如果未设置,您的用户 Session(会话)和其他加密数据将不安全。您可以通过运行以下命令手动生成它:
  • php artisan key:generate
  • 新生成的密钥将自动放置在您的 .env 文件中。
  • 其他配置: 您还应该在 .env 文件中配置其他常用设置,例如:
    • APP_NAME:您的应用程序名称。
    • APP_ENV:当前环境(例如:local、production、testing)。
    • APP_DEBUG:切换调试模式(debug mode)(true 用于本地开发,false 用于生产环境)。
    • APP_URL:您的应用程序的基础 URL。
    • DB_CONNECTION、DB_HOST、DB_PORT、DB_DATABASE、DB_USERNAME、DB_PASSWORD:数据库连接详情。
    • MAIL_MAILER、MAIL_HOST 等:邮件驱动配置。

您可以使用全局的 config 辅助函数(helper function)轻松地从应用程序的任何地方访问配置值。可以使用“点”语法(dot syntax)访问配置值,其中包含您希望访问的文件名和选项名称。

// 从 config/app.php 中获取应用程序名称
$appName = config('app.name');
// 从 config/database.php 中获取默认数据库连接
$defaultConnection = config('database.default');
// 您也可以在配置选项不存在时指定一个默认值
$timezone = config('app.timezone', 'UTC');

设置在 .env 文件中的配置值由 Laravel 加载,并可以使用 env() 辅助函数访问。然而,通常建议在您的应用程序代码中主要使用 config() 辅助函数。config 文件提供了默认值,而 env() 函数则在这些 config 文件内部用于加载特定于环境的覆盖值。

例如:在 config/app.php 中您可能会看到:

'name' => env('APP_NAME', 'Laravel'),
'env' => env('APP_ENV', 'production'),
'debug' => (bool) env('APP_DEBUG', false),

为了在生产环境中提高应用程序的速度,您应该使用 config:cache Artisan 命令将所有配置文件缓存到一个文件中。这将把所有的配置选项合并到一个文件中,框架可以快速加载它。

php artisan config:cache

运行此命令后,.env 文件在请求期间将不会被加载。因此,您只应在生产部署流程中运行 config:cache 命令。要清除配置缓存,请运行:

php artisan config:clear

应用命名空间 (Application Namespace)

Section titled “应用命名空间 (Application Namespace)”

默认情况下,您的应用程序的 PHP 代码,特别是在 app 目录中,位于 App 命名空间(namespace)下。这在您的 composer.json 文件的 autoload.psr-4 部分定义,并且是大多数 Laravel 项目的标准做法。虽然在高级场景下可以更改它(通过更新 composer.json 并运行 composer dump-autoload),但为了简单和一致性,建议坚持使用默认的 App 命名空间。

在更新应用程序或执行计划维护时,您会希望将应用程序置于“维护模式”。在维护模式下,对于所有进入应用程序的请求,都会显示一个可定制的维护视图。Laravel 通过两个 Artisan 命令轻松实现这一点。

要启用维护模式,执行 down Artisan 命令:

php artisan down

您还可以为 down 命令提供 message 和 retry 选项。message 值可用于显示自定义消息,而 retry 值将设置为 Retry-After HTTP 头(header)的值:

php artisan down --message="Upgrading the system, back shortly!" --retry=60

在维护模式下,Laravel 将显示一个默认的维护视图(通常是 503 状态码)。您可以通过创建 resources/views/errors/503.blade.php 文件来自定义此视图。

绕过维护模式:

您可以允许特定的 IP 地址或使用秘密令牌(secret token)绕过维护模式。例如,通过秘密路径允许访问:

php artisan down --secret="my-secret-bypass-token"

然后,您可以通过导航到 您的应用程序URL/my-secret-bypass-token 来访问应用程序。浏览器将获得一个维护模式绕过 Cookie。

要禁用维护模式并使您的应用程序恢复在线,使用 up Artisan 命令:

php artisan up

执行此命令后,您的应用程序将再次对用户可用。

有关更详细的配置选项,包括数据库、日志和缓存设置,请始终参考官方 Laravel 文档中的相关章节。