# Windows 上 PHP 扩展、php.ini 与 OPcache

> 只加载应用需要的扩展，每个 PHP 版本独立 php.ini，合理调 OPcache，并验证实际加载的配置。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

三个东西：

- `php.ini` — 实际加载配置；
- `ext\` — 扩展 DLL；
- `extension_dir` — PHP 去哪找 DLL。

先验证再排障：

```powershell
php --ini
php -m
php -i | Select-String "Loaded Configuration|extension_dir"
```

`Loaded Configuration File` 不是你改的文件，后面都没意义。

## 扩展

```ini
extension_dir="ext"
extension=curl
extension=mbstring
extension=openssl
extension=pdo_mysql
extension=mysqli
```

只开应用用的。每个扩展都是代码和补丁面。Windows DLL 一般 `php_<name>.dll`；`extension=curl` 会在 `extension_dir` 下找。

扩展加载失败查：

- DLL 在 `ext` 吗；
- 匹配 PHP 版本/TS-NTS/编译器吗；
- 依赖 DLL 在吗；
- PHP 错误日志说哪个失败。

## 每版本/每站点 php.ini

多 PHP 版本时，每个目录自己的 `php.ini`。不要把同一个 ini 跨大版本复制，扩展 ABI 可能不匹配。

站点专属 ini，可在 FastCGI 环境设 `PHPRC` 指向目录。显式设置；否则 PHP 可能加载 `C:\Windows\php.ini` 或旧版本文件。

## OPcache

```ini
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
```

- `validate_timestamps=1` 对开发和小编站安全；PHP 会检查文件 mtime。
- `validate_timestamps=0` 更快，但**部署后必须 reload/restart**，否则跑旧代码。
- 不要因为“更快”就开实验性 JIT；先测应用和指标。

验证：

```powershell
php -i | Select-String "opcache.enable|opcache.memory"
```

phpinfo 也能看，测完删。

> **警告: 不要跨大版本复制 php.ini**
>
> PHP 8.3 与 8.4 的扩展 ABI/默认值可能不同。每版本保留基线，升级时 diff，一次只改一个扩展。

## 生产基线

```ini
expose_php=Off
display_errors=Off
log_errors=On
error_log="C:\PHP\logs\php-error.log"
date.timezone=UTC
memory_limit=256M
max_execution_time=60
upload_max_filesize=32M
post_max_size=32M
```

`post_max_size` 要 >= `upload_max_filesize`，IIS/Nginx 限制要 >= 两者。

## 验证

```powershell
php --ini
php -m
php -r "echo ini_get('memory_limit'), PHP_EOL;"
```

再用一个真正调用扩展的页面（PDO/curl/mbstring）验证，不要只信 `php -m`。

## 实验室边界

E1。PHP 8.4.27 FastCGI 在 VM 361 验证；扩展/OPcache 设置在 Server 2025 上没有做加载测试。

## 来源

- [PHP — 配置文件](https://www.php.net/manual/zh/configuration.file.php)
- [PHP — OPcache](https://www.php.net/manual/zh/opcache.configuration.php)

---

来源页面: https://winbook.fyi/zh/server/runtimes/php-config/
