PHP中使用线程报错Class Thread not found的解决求助
解决PHP「Class Thread not found」问题的实用方案
一、修正版本匹配误区
VC15编译的PHP 7.3,不要使用VC14版本的pthreads——虽然理论上宣称兼容,但Windows环境下VC编译版本不匹配会直接导致扩展加载失败,根本无法生效。注意:pthreads v3.x才支持PHP 7.2+,你需要获取对应VC15编译的pthreads扩展包(不要局限于官方PECL的旧版本)。
二、调整文件放置路径
php_pthreads.dll仅需放到PHP的ext目录,无需放到Apache目录,多放反而可能引发加载冲突。pthreadVC2.dll必须放到系统目录(如C:\Windows\System32)或Apache的bin目录,而非PHP根目录——Apache启动时会优先加载系统目录或自身bin目录的依赖库,PHP根目录的dll无法被Apache进程识别。
三、验证扩展是否成功加载
- 创建
phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
- 访问该文件,搜索「pthreads」关键词:
- 若找不到相关模块信息,说明扩展未加载,回到版本匹配和路径配置步骤排查。
- 若找到模块信息,确认
Thread Safety项为enabled,确保线程安全环境正常。
四、长期替代方案:改用Parallel扩展
pthreads在PHP 7.4后已被官方废弃,PHP 7.3的维护支持也较差。推荐使用官方替代的Parallel扩展,它对高版本PHP兼容性更好,Windows环境适配更完善:
- 下载对应PHP版本、线程安全(TS)、VC15编译的Parallel扩展包
- 按常规扩展流程配置:将扩展文件放入
ext目录,在php.ini中添加extension=parallel - 使用时用
Parallel\Runtime和Parallel\Task替代原Thread类
内容的提问来源于stack exchange,提问作者kemal ozdogan
相关产品推荐
相关产品推荐

