跳转到内容

Windows 上 PHP 扩展、php.ini 与 OPcache

核验于 1 分钟阅读

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

测试环境Standard / Datacenter · 版本号 26100.33650 · x64
E1
版本号
26100.33650
版本
Standard / Datacenter
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
页面类型
任务

三个东西:

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

先验证再排障:

终端窗口
php --ini
php -m
php -i | Select-String "Loaded Configuration|extension_dir"

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

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 版本时,每个目录自己的 php.ini。不要把同一个 ini 跨大版本复制,扩展 ABI 可能不匹配。

站点专属 ini,可在 FastCGI 环境设 PHPRC 指向目录。显式设置;否则 PHP 可能加载 C:\Windows\php.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;先测应用和指标。

验证:

终端窗口
php -i | Select-String "opcache.enable|opcache.memory"

phpinfo 也能看,测完删。

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 限制要 >= 两者。

终端窗口
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 上没有做加载测试。

来源