You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux(WSL2 Ubuntu22.04)下使PHP8的parallel扩展正常工作?

问题:PHP8 ZTS版本无法加载parallel扩展,导致1BRC脚本运行失败

环境

  • Windows11主机 + WSL2 Ubuntu22.04
  • 目标:编译带ZTS的PHP8并安装parallel扩展,运行1BRC的PHP实现

已执行操作

  • 适配PHP7教程的配置,将--enable-maintainer-zts替换为--enable-zts,使用指定脚本编译PHP(返回0退出码)
  • 手动安装了ext-parallel扩展

触发的错误

  1. 运行1BRC命令phpz -d extension=parallel calculateAverage.php 4时的致命错误:
Fatal error: Uncaught Error: Class "parallel\Runtime" not found in /home/helitonmrf/projects/1brc/php_realFlowControl/calculateAverage.php:102
Stack trace:
#0 {main}
  thrown in /home/helitonmrf/projects/1brc/php_realFlowControl/calculateAverage.php on line 102
  1. PHP启动时的扩展加载警告:
PHP Warning:  PHP Startup: Unable to load dynamic library 'parallel' (tried: /etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel (/etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel: cannot open shared object file: No such file or directory), /etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel.so (/etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'parallel' (tried: /etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel (/etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel: cannot open shared object file: No such file or directory), /etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel.so (/etc/php8z/lib/php/extensions/no-debug-zts-20230831/parallel.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

解决办法

1. 定位编译好的parallel.so文件

编译ext-parallel后,扩展源码目录的modules文件夹下会生成parallel.so,用以下命令查找:

find /your/ext-parallel-source-dir -name "parallel.so"

2. 复制扩展到PHP指定目录

根据警告中的路径,将parallel.so复制到PHP期望的扩展目录:

cp /found/path/parallel.so /etc/php8z/lib/php/extensions/no-debug-zts-20230831/

3. 配置PHP加载扩展

找到phpz对应的php.ini文件(执行phpz -i | grep php.ini获取路径),打开后添加一行:

extension=parallel.so

4. 验证扩展加载状态

执行以下命令检查扩展是否成功加载:

phpz -m | grep parallel

若输出parallel,说明扩展加载生效。

5. 重新运行1BRC脚本

再次执行命令:

phpz -d extension=parallel calculateAverage.php 4

额外排查点

  • 确认PHP为ZTS版本:执行phpz -i | grep "Thread Safety",输出需为enabled
  • 匹配编译版本:确保phpize --version与phpz -v的版本号一致
  • 编译ext-parallel时指定正确配置:在扩展目录执行./configure --with-php-config=$(which phpz-config)

内容的提问来源于stack exchange,提问作者Heliton Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:05:20