0

0

PHP拓展怎么安装_源码编译装拓展要先装什么软件包【指南】

絕刀狂花

絕刀狂花

发布时间:2026-02-06 02:19:18

|

649人浏览过

|

来源于php中文网

原创

编译 PHP 扩展前必须安装三类依赖:PHP 开发包(php-dev 或 php-devel)、构建工具(autoconf/automake/libtool)及扩展特有库(如 libhiredis-dev);phpize 用于生成匹配目标 PHP 版本的 configure 脚本,需确保其 PHP API 版本与 php -i 一致;configure 须指定 --with-php-config 和必要路径参数;.so 文件须放至 extension_dir 并在 php.ini 中正确启用,注意加载顺序与 ABI 兼容性。

php拓展怎么安装_源码编译装拓展要先装什么软件包【指南】

源码编译 PHP 扩展前必须装哪些依赖

缺依赖是编译失败最常见原因,不是“找不到 phpize”就是“configure: error: not found”,本质是开发头文件和构建工具没到位。

以主流 Linux 发行版为例,核心要装三类:

  • php-dev(Debian/Ubuntu)或 php-devel(CentOS/RHEL)——提供 phpizephp-config 和 PHP 内部头文件(如 php.h),没它连第一步都走不了
  • autoconfautomakelibtool——PHP 扩展 configure 脚本由 autoconf 生成,缺它们会报 autoreconf: command not found
  • 对应扩展的外部依赖,比如编译 redis 扩展需 libhiredis-dev(Ubuntu)或 hiredis-devel(CentOS);编译 gdlibpng-devlibjpeg-dev

phpize 是什么,为什么每次都要用它

phpize 不是编译器,而是为扩展生成 configure 脚本的“预处理器”。它读取当前 PHP 安装路径、ABI 版本、扩展目录位置,确保后续 ./configure 能对上号。

常见误区:用系统自带 PHP 的 phpize 去编译为另一个 PHP(比如自己编译的 PHP 7.4)写的扩展,结果 make installphp -m 看不见,或者启动时报 undefined symbol。解决方法只有一个:用目标 PHP 对应的 phpize,通常在 /path/to/php/bin/phpize

立即学习PHP免费学习笔记(深入)”;

BetterYeah AI
BetterYeah AI

基于企业知识库构建、训练AI Agent的智能体应用开发平台,赋能客服、营销、销售场景 -BetterYeah

下载

验证方式:phpize --version 输出的 PHP API 版本(如 20190902)必须和 php -i | grep "PHP API" 一致。

configure 参数怎么选才不翻车

多数扩展默认只启核心功能,但有些选项一漏就直接编译失败,或运行时报错。

  • --with-php-config=/path/to/php/bin/php-config:强制指定配置工具路径,避免找错 PHP 安装;不加可能误用系统 PHP 的头文件
  • --enable-xxx 类开关(如 --enable-opcache)一般不用手动开,因为 opcache 是内建模块,源码里已存在;但像 --enable-redis-igbinary 这种需额外支持的就得显式打开
  • 路径类参数如 --with-openssl-dir=/usr/local/ssl,当 OpenSSL 不在标准路径时必须指定,否则 configure 通过但运行时报 SSL routines:OPENSSL_internal:UNKNOWN_SSL_PROTOCOL

编译完的 .so 文件放哪、怎么加载

执行 make install 后,最终的 .so 文件默认放在 extension_dir 指向的目录(可通过 php -i | grep extension_dir 查)。但只是放对位置还不够:

  • 确认 php.ini 中已启用 extension_dir,且值正确(绝对路径,末尾不加斜杠)
  • php.ini 里加一行 extension=redis.so(注意不是完整路径,除非你用 extension=/full/path/redis.so
  • 如果扩展依赖其他 so(如 igbinary.so 必须在 redis.so 前加载),顺序不能错;ini 中靠前的先加载
  • 改完 ini 必须重启 PHP-FPM 或 Apache,php -m 只反映 CLI SAPI,不能代表 Web 环境

最容易被忽略的是 ABI 兼容性:同一个 .so 文件不能跨 PHP 主版本使用(如 PHP 8.1 编译的 mongodb.so 无法在 PHP 8.2 下加载),错误信息通常是 undefined symbol: zend_new_interned_string 这类内部函数名不匹配。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

309

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

317

2023.10.25

undefined是什么
undefined是什么

undefined是代表一个值或变量不存在或未定义的状态。它可以作为默认值来判断一个变量是否已经被赋值,也可以用于设置默认参数值。尽管在不同的编程语言中,undefined可能具有不同的含义和用法,但理解undefined的概念可以帮助我们更好地理解和编写程序。本专题为大家提供undefined相关的各种文章、以及下载和课程。

5480

2023.07.31

网页undefined是什么意思
网页undefined是什么意思

网页undefined是指页面出现了未知错误的意思,提示undefined一般是在开发网站的时候定义不正确或是转换不正确,或是找不到定义才会提示undefined未定义这个错误。想了解更多的相关内容,可以阅读本专题下面的文章。

3124

2024.08.14

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

852

2025.12.25

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

986

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

647

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

491

2024.04.02

java连接字符串方法汇总
java连接字符串方法汇总

本专题整合了java连接字符串教程合集,阅读专题下面的文章了解更多详细操作。

7

2026.02.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号