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

Ubuntu20+Apache2环境下PHP7.2无法加载rdkafka扩展问题求助

问题根因

undefined symbol: zend_string_init_interned报错的核心原因是编译rdkafka扩展时使用的PHP开发头文件版本与实际运行的PHP7.2版本不兼容。你之前编译生成的rdkafka.so适配的是高版本PHP(安装路径的20200930是PHP8.0对应的API版本号),手动移动到PHP7.2的扩展目录(API版本20170718)也无法正常加载,两者的Zend内核API完全不匹配。

解决步骤
  • 清理旧的错误编译文件与不兼容依赖
    首先删除之前生成的错误扩展文件:
    sudo rm -f /usr/lib/php/20170718/rdkafka.so /usr/lib/php/20200930/rdkafka.so
    
    卸载系统默认的高版本php-dev包:
    sudo apt purge -y php-dev
    
  • 安装PHP7.2对应版本的依赖包
    如果系统没有PHP7.2的软件源,先添加源:
    sudo add-apt-repository ppa:ondrej/php && sudo apt update
    
    安装编译需要的依赖:
    sudo apt install -y php7.2-dev librdkafka-dev gcc make pkg-config
    
    执行以下命令验证版本匹配,输出API版本需为20170718、PHP版本为7.2.x:
    phpize -v
    php-config --version
    
  • 重新编译适配PHP7.2的rdkafka扩展
    下载兼容PHP7.2的php-rdkafka 4.x版本源码,解压后进入源码目录,依次执行:
    phpize
    ./configure --with-php-config=/usr/bin/php-config7.2
    make -j$(nproc)
    sudo make install
    
    此时扩展会自动安装到PHP7.2的扩展目录/usr/lib/php/20170718/下,无需手动移动。
  • 配置扩展加载
    新增扩展配置文件:
    echo "extension=rdkafka.so" | sudo tee /etc/php/7.2/mods-available/rdkafka.ini
    
    分别为CLI和Apache2的PHP环境启用扩展:
    sudo ln -s /etc/php/7.2/mods-available/rdkafka.ini /etc/php/7.2/cli/conf.d/20-rdkafka.ini
    sudo ln -s /etc/php/7.2/mods-available/rdkafka.ini /etc/php/7.2/apache2/conf.d/20-rdkafka.ini
    
  • 验证安装并重启服务
    执行CLI验证命令,输出rdkafka即说明CLI端扩展加载成功:
    php -m | grep rdkafka
    
    重启Apache2服务使Web端配置生效:
    sudo systemctl restart apache2
    

内容的提问来源于stack exchange,提问作者M a m a D

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:24:05