贝利信息

Laravel Sail 中自定义 php.ini 配置的正确方法

日期:2026-01-05 00:00 / 作者:心靈之曲

在 laravel sail 中直接修改容器内 php.ini 文件无效,需通过 `sail artisan sail:publish` 导出 docker 配置,编辑本地 `docker/php/php.ini` 并重建镜像,才能使 php 配置生效。

Laravel Sail 是基于 Docker 的轻量级开发环境,其 PHP 配置并非在运行时动态加载宿主机或容器内任意路径的 php.ini,而是由构建阶段的 Docker 镜像决定。因此,直接进入容器(如 sail shell)后编辑 /etc/php/8.1/cli/php.ini 或 conf.d/99-sail.ini 是临时且无效的——这些改动会在容器重启后丢失,且 Sail 启动时使用的镜像并未包含你的修改。

✅ 正确做法是:使用 Sail 提供的官方定制机制:

  1. 导出 Docker 配置文件
    在项目根目录执行:

    sail artisan sail:publish

    该命令会在项目中生成 docker/ 目录,包含 Dockerfile, docker-compose.yml, php/Dockerfile, 以及可编辑的 php/php.ini 等文件。

  2. 编辑 PHP 配置
    修改 docker/php/php.ini(对应 CLI 和 FPM 共享的配置),例如启用扩展或调整内存限制:

    ; docker/php/php.ini
    memory_limit = 2G
    upload_max_filesize = 64M
    post_max_size = 64M
    extension=mysqli
    extension=gd
    ⚠️ 注意:不要修改 docker/php/Dockerfile 中 COPY php.ini 的路径逻辑;默认它已指向此文件。确保 php.ini 文件存在且权限正常(UTF-8 编码,无 BOM)。
  3. 重建并重启服务

    sail build --no-cache
    sail up -d

    --no-cache 确保重新编译镜像,跳过缓存旧配置。之后访问 http://localhost 并运行 ,即可看到更新后的“Loaded Configuration File”指向 /etc/php/8.1/cli/php.ini,且所有修改均已生效。

? 补充说明:

遵循此流程,即可持久、可靠地定制 Laravel Sail 的 PHP 运行时行为。