在 laravel sail 中直接修改容器内 php.ini 文件无效,需通过 `sail artisa
n 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 提供的官方定制机制:
导出 Docker 配置文件
在项目根目录执行:
sail artisan sail:publish
该命令会在项目中生成 docker/ 目录,包含 Dockerfile, docker-compose.yml, php/Dockerfile, 以及可编辑的 php/php.ini 等文件。
编辑 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)。
重建并重启服务
sail build --no-cache sail up -d
--no-cache 确保重新编译镜像,跳过缓存旧配置。之后访问 http://localhost 并运行 ,即可看到更新后的“Loaded Configuration File”指向 /etc/php/8.1/cli/php.ini,且所有修改均已生效。
? 补充说明:
遵循此流程,即可持久、可靠地定制 Laravel Sail 的 PHP 运行时行为。