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

13次阅读

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

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. 重建并重启服务

    立即学习PHP免费学习笔记(深入)”;

    sail build --no-cache sail up -d

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

? 补充说明:

  • 若你使用的是 apache(非默认 nginx),需确认 docker/php/Dockerfile 中是否同时复制了 apache2/php.ini ——但 Laravel Sail 默认使用 PHP-FPM + Nginx,因此只需维护 cli 和 fpm 下的配置(docker/php/php.ini 会被同时用于两者)。
  • windows + WSL2 环境下,务必在 WSL2 的 ubuntu 终端中执行上述命令(而非 Windows PowerShell),并确保 Docker Desktop 的 WSL2 后端已启用。
  • 修改后可通过 sail php –ini 快速验证配置路径,或 sail php -m 检查扩展是否载入。

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

text=ZqhQzanResources