必须在扩展源码中注册info函数并正确编译加载,否则php 8.0扩展不会出现在phpinfo()的“additional modules”中;需用zend_module_entry的info_func挂载php_minfo_function回调,配合phpize构建、php.ini启用及服务重启完成全流程。

要让自定义 PHP 8.0 扩展在 phpinfo() 输出中显示专属信息栏,必须在扩展源码中注册 info 函数并正确编译加载;否则该扩展将完全不出现于 phpinfo 页面的“Additional Modules”或任何模块列表中。
在扩展源码中定义 phpinfo() 显示逻辑
这一步是核心前提,缺它 phpinfo() 就不会为你扩展留位置。PHP 8.0 要求使用 zend_module_entry 结构体中的 info_func 成员挂载回调函数,不能沿用 PHP 7.x 的旧式宏写法。
打开你的扩展主源文件(如 myext.c),在 zend_module_entry 定义末尾添加 info_func 指针:
【必须放在 zend_module_entry 最后一个字段,且不能遗漏分号】
static const zend_module_entry myext_module_entry = {
STANDARD_MODULE_HEADER,
"myext",
myext_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
"1.0.0",
STANDARD_MODULE_PROPERTIES_EX
};
→ 在其上方新增函数声明:
PHP_MINFO_FUNCTION(myext);
→ 在其下方实现该函数,内容至少包含一行输出:
PHP_MINFO_FUNCTION(myext) {
php_info_print_table_start();
php_info_print_table_header(2, "MyExt Support", "enabled");
php_info_print_table_row(2, "Version", MYEXT_VERSION);
php_info_print_table_end();
}
注意:PHP_MINFO_FUNCTION 是 PHP 8.0+ 的标准宏,展开后自动适配 zend_info_func_t 类型;若手写函数签名错误(如返回 void 或参数不匹配),编译会失败或运行时崩溃。
重新编译并启用扩展
方法一:使用 phpize 构建流程(推荐)
第一步:进入扩展源码根目录,执行 phpize(确保对应 PHP 8.0 的 phpize 可用);
第二步:运行 ./configure --with-php-config=/path/to/php8.0/bin/php-config;
第三步:执行 make && sudo make install;
第四步:确认生成的 myext.so 已落进 extension_dir 目录(可用 php -i | grep extension_dir 验证)。
方法二:手动编译(仅限调试)
gcc -I/usr/include/php/8.0/ -I/usr/include/php/8.0/main -I/usr/include/php/8.0/TSRM -I/usr/include/php/8.0/Zend -shared -fPIC -o myext.so myext.c -lphp8.0
→ 编译命令中路径必须严格匹配你系统中 PHP 8.0 头文件实际位置,Ubuntu/Debian 系统通常为 /usr/include/php/8.0/,CentOS/RHEL 则可能是 /usr/include/php-zts/ 或 /opt/remi/php80/root/usr/include/php/;路径错一个字符,编译就报找不到 zend.h。
配置 php.ini 并验证输出
编辑当前 CLI 或 Web SAPI 对应的 php.ini(用 php --ini 确认路径),在文件末尾追加:
extension=myext.so
→ 若扩展依赖其他扩展(如需要 curl 或 json),必须确保它们在 myext.so 之前加载,否则 phpinfo() 中 myext 栏目可能显示为空白或触发段错误;
→ 保存后重启 Web 服务器(Apache/Nginx)或直接在终端运行 php -m | grep myext 验证是否加载成功;
→ 最后执行 php -r "phpinfo();" 或访问 info.php 页面,向下滚动至 “Additional Modules” 区域,即可看到你定义的 MyExt Support 表格。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











