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

Ubuntu 22.04下加载PHP 7.0.33 zip扩展遇pcre_exec错误求助

解决PHP 7.0.33加载zip.so时出现"undefined symbol: pcre_exec"错误的方案

核心原因

你通过apt-get安装的php7.0-zip是针对系统默认PHP版本编译的,和自定义编译安装到/usr/local的PHP 7.0.33依赖的PCRE库版本、路径不兼容,导致扩展加载时无法找到正确的pcre_exec符号。

具体解决步骤

1. 清理不兼容的apt安装包

先移除系统中与自定义PHP不匹配的zip扩展包:

sudo apt-get remove --purge php7.0-zip
sudo apt-get autoremove

2. 基于自定义PHP源码编译zip扩展

使用和你编译PHP 7.0.33相同的环境编译zip扩展,保证依赖一致:

  • 找到当初编译PHP 7.0.33的源码目录,进入ext/zip子文件夹(如果源码中没有该目录,需要从PHP官方下载对应版本的源码包解压)
  • 调用自定义PHP的phpize工具生成编译配置:
cd /path/to/php-7.0.33/ext/zip
/usr/local/bin/phpize
  • 配置编译参数,指定自定义PHP的配置路径:
./configure --with-php-config=/usr/local/bin/php-config
  • 编译并安装扩展:
make && sudo make install

3. 配置php.ini加载扩展

编译完成后,zip.so会自动安装到你的PHP扩展目录(可通过/usr/local/bin/php-config --extension-dir查看具体路径),在php.ini中添加或确认以下配置:

extension=zip.so

4. 验证并重启服务

  • 执行/usr/local/bin/php -m,确认zip和pcre扩展都在加载列表中
  • 重启Apache服务:
sudo systemctl restart apache2
  • 可通过创建phpinfo页面访问,确认zip扩展已正常加载

额外排查点

  • 确保当初编译PHP时启用了PCRE支持:编译命令中应包含--with-pcre(默认启用,若手动禁用过需重新编译PHP)
  • 检查PCRE库版本一致性:用ldd /usr/local/bin/php查看PHP依赖的PCRE库路径,确保编译zip扩展时链接的是同一库文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:02:35