PHPStudy启用Redis等扩展需手动三步:下载匹配PHP版本(含NTS/TS、VC、x64/x86)的php_redis.dll,复制到ext目录,修改php.ini添加extension=php_redis.dll,最后重启Apache验证。

phpStudy 添加 PHP 扩展不是点一下“启用”就完事的——很多扩展(比如 redis、memcached、grpc)需要手动复制 DLL 文件、修改 php.ini、重启服务,且版本必须严格匹配 PHP 架构(NTS/TS)和 VC 编译器版本(VC15/VC16)。直接勾选“启用”却没生效,基本是因为这三步漏了其中一环。
PHP 扩展勾选后不生效?先确认架构和版本对得上
phpStudy 的 PHP 版本分两类:nts(Non-Thread-Safe)和 ts(Thread-Safe),对应 Apache 模块(ts)或 CLI/CGI(nts)运行模式。扩展 DLL 文件名里会明确标出,例如:php_redis.dll 和 php_redis_nts.dll 是不同文件。
常见错误现象:
- 勾选扩展后重启 Apache,
phpinfo()里看不到模块,也无报错 - Apache 启动失败,日志显示
PHP Warning: PHP Startup: Unable to load dynamic library 'redis' - 命令行
php -m | findstr redis有输出,但浏览器访问时没加载
解决办法:
立即学习“PHP免费学习笔记(深入)”;
- 在 phpStudy 主界面 → “软件管理” → “PHP”,点击当前启用版本右侧的“配置文件”按钮,打开
php.ini - 搜索
extension_dir,确认路径指向的是当前 PHP 版本的ext目录(如D:\phpstudy_pro\Extensions\php\php7.4.3nts\ext) - 用
php -v查看 PHP 版本及架构标识(末尾带NTS或无标识即为 NTS;带TS即为线程安全版) - 下载扩展 DLL 时,必须匹配:PHP 主版本(7.4/8.0)、架构(nts/ts)、VC 版本(phpStudy v8.2 多为 VC15)、位数(x64)
手动添加扩展的三步硬操作(以 redis 为例)
phpStudy 界面勾选只负责写入 ini 配置,但不会自动下载或校验 DLL。真正起作用的是 php.ini 中的 extension= 行 + 对应 DLL 存在 + 架构兼容。
实操步骤:
- 去官方扩展源(如 pecl.php.net)下载对应版本的
php_redis.dll(注意文件名含 nts 或 ts) - 将 DLL 文件复制到
extension_dir指向的目录(不是 PHP 根目录,也不是 ext 子目录下再建子目录) - 编辑
php.ini,在;extension=openssl类似位置下方添加一行:extension=php_redis.dll(不要加路径,只写文件名) - 保存后,在 phpStudy 界面重启 Apache(不是“重载”,是“停止→启动”)
- 创建
info.php输出phpinfo(),搜索 “redis” 确认模块已加载且版本正确
为什么有些扩展 phpStudy 界面里根本找不到?
phpStudy 内置的“PHP 扩展”列表只包含它预打包的常用扩展(如 curl、gd、mbstring),像 grpc、sqlsrv、pdo_sqlsrv、yaml 这类需额外依赖或微软组件的扩展,不在默认清单中,必须手动处理。
典型场景:
-
sqlsrv扩展:需先安装 Microsoft ODBC Driver for SQL Server,否则 DLL 加载会静默失败 -
grpc扩展:除了 DLL,还需php_grpc.dll和同目录下的grpc_csharp_ext.x64.dll(缺一不可) -
yaml扩展:部分版本依赖libyaml.dll,需将其放入 PHP 根目录或系统PATH路径
验证方式:查看 Apache 错误日志(phpStudy → “日志” → “Apache” → “error.log”),真正的加载失败原因全在里面,而不是界面提示。
扩展启用后报错“undefined function”?检查是否漏了依赖扩展
不少扩展有隐式依赖。例如启用 opcache 本身没问题,但若项目用了 apcu 做用户缓存,而 apcu 又依赖 apcu_bc(向后兼容层),就会出现函数存在但调用报错。
容易被忽略的点:
-
intl扩展:需确保系统有icuuc.dll、icuin.dll等 ICU 库,否则collator_create()等函数直接不可用 -
imagick扩展:不仅需要php_imagick.dll,还要求 ImageMagick 二进制目录加入系统PATH,否则new Imagick()报错 - 所有启用
openssl的扩展(如curl、ldap)都依赖libeay32.dll和ssleay32.dll——这些文件必须在 PHP 目录下,或 WindowsSystem32中
最稳妥的排查动作:用 php -m 列出所有已加载模块,再逐个查文档确认其运行时依赖项是否就位。



















