
在 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 提供的官方定制机制:
-
导出 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)。
-
重建并重启服务
立即学习“PHP免费学习笔记(深入)”;
韩国商城购物MORNING MALL下载主要增加论坛整合,在后台内置网银,快钱支付宝等实时在线支付平台 支付宝支付方式改成在收银台统一支付 并且修改了收到已付款定单后台显示定单确认功能[这功能非常强大,自动确认] 并且增加了商城内短信功能,商城店主可以自由与会员之间实时交谈。 改正给ID添加积分后,登陆到前台,在 MEMBER LOGIN 下面的积分仍然显示为0的问题 修改 订单确认 中 投递&包装方法 没有根据前面的选择而改
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 运行时行为。










