PAYATHON 2026

Windows 上 Composer 安装器提示 php.ini 配置问题,如何排查?

数据阿明

结论

两套 PHP 并存可能导致你修改的配置与 Composer 实际使用的配置不一致,但仅凭这段提示,还不能确定失败原因。

提示中的 C:\Program Files\php-8.5.3\php.ini 表明,安装器报告其所用的命令行 PHP 配置文件位于这里。使用这套 PHP 本身没有问题,也不一定需要切换到 XAMPP。请确认安装器选择的 php.exe、你修改的 php.ini 和扩展文件属于同一套 PHP。

取消扩展配置行的注释,也不代表扩展已经加载成功。当前提示的 Required settings: 后没有具体项目,无法据此判断还缺少哪个设置。

1. 确认命令行实际使用哪套 PHP

打开一个新的 PowerShell 窗口,运行:

where.exe php
php --ini
php -v
php -m

这些命令分别用于检查:

  • where.exe php:当前目录和 PATH 中可以找到哪些 php.exe。
  • php --ini:实际加载的 php.ini,以及是否还读取了其他 .ini 文件。
  • php -v:PHP 版本及可能出现的启动警告。
  • php -m:已经成功加载的扩展。

在 php --ini 的输出中,查看 Loaded Configuration File。如果它与安装器报告的路径不同,说明终端和安装器使用的配置不同,需要分别确认它们选择的 PHP。

在 PowerShell 中使用 where.exe,可以避免与 where 的别名混淆。

2. 直接检查安装器使用的 PHP

如果该目录下确实存在 php.exe,可以通过完整路径运行它,排除 PATH 对这次检查的影响:

$php = 'C:\Program Files\php-8.5.3\php.exe'
& $php --ini
& $php -v
& $php -m

这里沿用问题中提供的目录路径;如果实际安装位置不同,请替换为实际路径。

检查输出中是否出现 PHP Startup、Unable to load dynamic library 或其他警告。如果有,先处理这些警告,它们通常比安装器的汇总提示更有助于定位问题。

如果希望使用 XAMPP 的 PHP,也可以对它的 php.exe 做相同检查。XAMPP 常见的位置是 C:\Xampp\php\php.exe,但应以实际文件位置为准。

3. 检查扩展是否真正加载

打开上一步确认的 php.ini,检查扩展目录和对应配置。假设你使用的是问题中的独立 PHP,且扩展确实位于其 ext 目录,配置可以是:

extension_dir = "C:/Program Files/php-8.5.3/ext"

extension=curl
extension=mbstring
extension=openssl

如果已有这些配置,修改原有条目即可,避免重复添加。配置行开头不能保留表示注释的分号 ;。

随后重新运行:

& $php -m

确认输出中是否有 curl、mbstring 和 openssl。检查这三个扩展是因为它们出现在你的安装器提示中;不能仅凭当前片段断言所有 Composer 安装场景都强制要求这三个扩展。

如果仍然加载失败,检查:

  • extension_dir 是否指向当前这套 PHP 的扩展目录。
  • 目录中是否存在相应的 php_curl.dll、php_mbstring.dll 和 php_openssl.dll。
  • 扩展及其依赖是否与当前 PHP 的版本、架构和构建方式匹配。

即使扩展 DLL 存在,也可能因依赖库缺失而加载失败。不要直接把另一套 PHP 或 XAMPP 的 DLL 复制过来混用,应根据启动警告处理对应安装包的问题。

4. 让安装器与终端使用选定的 PHP

确定要使用哪套 PHP 后,在 Composer Windows 安装器选择 PHP 可执行文件的步骤中,明确选择对应的 php.exe。

如果还希望终端中的 php 命令使用同一套 PHP,再调整 Windows 的 PATH:

  1. 找到两套 PHP 所在目录的相关条目。
  2. 将选定的 PHP 目录放在另一套之前;PATH 中填写目录,不是 php.exe 文件路径。
  3. 关闭旧终端,打开新终端,重新运行 where.exe php 和 php --ini。
  4. 重新运行 Composer 安装器,确认选中的 PHP 路径。

不需要为了修复这个问题卸载其中一套 PHP。命令行 PHP 和 XAMPP 中供 Web 服务使用的 PHP 可以不同,但各自的配置需要分别维护。

命令行 PHP 每次启动都会读取配置,因此修改后重新运行命令即可。如果修改的是 XAMPP 中 Web 服务使用的配置,则需要重启相应服务才能生效。

5. 如果安装器仍然只显示这段提示

此时还缺少足以确定根因的信息。请保留安装器的完整错误详情,并核对同一个 php.exe 的 --ini、-v 和 -m 输出。不要仅根据 php.ini 的路径继续猜测缺少的设置,也不要通过关闭 TLS 校验来绕过安装失败。

Composer 安装成功后,再进入项目目录安装 phpdotenv:

composer --version
composer require vlucas/phpdotenv

数据库凭据写入 .env 后,还要将 .env 加入 .gitignore。如果文件此前已经提交到 Git,仅添加忽略规则不会移除已跟踪的文件或历史中的凭据;如果真实凭据已经公开,应更换凭据。

备注:内容仅供参考。