Composer报“phar extension is missing”实为phar.readonly=On导致解包失败,需先php -m | grep phar确认已加载,再php -i | grep "phar.readonly"验证是否为Off;若为On,则修改CLI对应的php.ini中phar.readonly = Off并重启终端。

composer install报错“phar extension is missing”怎么确认
这不是扩展没装,而是phar.readonly被设为On导致 Composer 无法解包——PHP 自带phar扩展,但默认禁写时,Composer 就会误报“missing”。
先验证真实状态:php -m | grep phar 应该输出phar(说明已加载);再查配置:php -i | grep "phar.readonly",如果输出是On,就是它了。
- 别信报错里写的“missing”,
phar扩展本身不用单独安装(PHP ≥ 5.3 默认内置) - Web 环境(如 phpinfo)里
phar.readonly = Off≠ CLI 环境也生效,必须单独改 CLI 的 php.ini - Debian/Ubuntu 下路径通常是
/etc/php/*/cli/php.ini;CentOS/RHEL 多在/etc/php.d/下找对应 ini 文件
如何改phar.readonly为Off(Linux/macOS)
找到 CLI 模式加载的 php.ini,编辑后保存即可,无需重启服务。
执行顺序不能乱:php --ini → 看Loaded Configuration File那行路径 → 用sudo nano /path/to/php.ini打开 → 搜索phar.readonly → 改成Off → 保存退出。
- 如果
php --ini显示Loaded Configuration File: (none),说明 CLI 根本没加载 ini,得手动复制一份(比如cp /usr/lib/php/*/php.ini-production /etc/php/*/cli/php.ini) - 改完立刻验证:
php -i | grep "phar.readonly"必须输出Off,否则修改无效 - 某些云主机或 Docker 镜像会把 php.ini 挂载为只读,这时得在构建阶段就写死配置,运行时改不了
Windows 下phar.readonly怎么开
Windows 的 PHP 安装包(如 XAMPP、WAMP、官方二进制)默认关掉phar.readonly,但若你手动编译或用了精简版,就得自己开。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
打开php.ini(路径由php --ini返回,注意是 CLI 对应的那个),搜索phar.readonly,取消注释并设为Off:
phar.readonly = Off
- 别改错文件:
phpinfo()页面里的Loaded Configuration File是 Web 模块路径,和 Composer 无关 - 改完必须重启命令行(CMD/PowerShell/WSL 终端),旧进程不会重读 ini
- 如果仍报错,检查
open_basedir是否限制了临时目录(如C:\Windows\Temp),Composer 解包需要写权限
绕过phar限制的临时方案(不推荐长期用)
仅用于调试或 CI 环境快速验证,不能替代配置修复。
composer install --ignore-platform-reqs会跳过所有扩展检查,包括phar.readonly;但更精准的是:composer install --ignore-platform-req=ext-phar。
- 这个参数只忽略
ext-phar声明,不影响其他扩展校验(比如mbstring、curl仍会检查) - 用完立刻还原,否则上线后可能因归档损坏或签名验证失败导致部署中断
- Dockerfile 中慎用:它掩盖问题,下次镜像重建又卡住,不如一开始就 fix php.ini
真正要命的不是找不到phar扩展,而是phar.readonly = On让 Composer 无法写入临时归档——这问题藏得深,改对配置文件比换镜像、清缓存、重装 Composer 都管用得多。

















