
Linux下php动态添加扩展
PHP模块开发是将C扩展与PHP脚本集成的过程。要实现灰度算法在PHP中的调用,需遵循以下步骤。
发布日期:2025-04-07 13:55:29
浏览次数:6
分类:精选文章
本文共 1731 字,大约阅读时间需要 5 分钟。
如何将C函数作为PHP模块开发
生成需要调用的so文件:
1.1 Spearate gray.c使用gcc编译gray.c生成gray.o:
gcc -O -c -fPIC -o gray.o gray.c
1.2 Compile gray.o生成libgray.so:
gcc -shared -o libgray.so gray.o
注意:-fPIC使生成的动态库位置无关,可以在任何位置使用。
1.3 Copy libgray.so到用途目录:
cp libgray.so /usr/local/lib
1.4 注册动态链接库:将库的路径添加到_ld.so.conf文件中:
echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf
运行:
/sbin/ldconfig
验证函数:
编写并测试gray_test.c:
#includeint main() { int a = 3, b = 4, c = 5; printf("r=%d g=%d b=%d -> gray=%d\n", a, b, c, RGB_TO_GRAY(a, b, c)); return 0;}gcc -o test test.c -lgray./test
制作PHP模块:
2.1 创建PHP扩展项目:
cd $php-5.3.23/ext/./ext_skel --extname=gray
修改config.m4:
将注释从使用dnl注释替代:
gedit gray/config.m4
修改为:
PHP_ARG_ENABLE(gray, 是否启用gray支持, Make sure comment is aligned: [ --enable-gray ] enable gray support)
修改php_gray.h:
将PHP_FUNCTION(confirm_gray_compiled);
改为PHP_FUNCTION(gray);
编辑gray.c,修改函数入口:
从:
zend_function_entry php5cpp_functions[] = { /* -- */ PHP_FE(confirm_gray_compiled, NULL) /* For testing, remove later. */ { NULL, NULL, NULL }};
改为:
zend_function_entry php5cpp_functions[] = { /* -- */ PHP_FE(gray, NULL) { NULL, NULL, NULL }};
在gray.c末尾添加新函数:
PHP_FUNCTION(gray) { long int r, g, b; long int result; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll&", r, g, b) == FAILURE) { return; } result = RGB_TO_GRAY(r, g, b); RETURN_LONG(result);}
- Compile扩展:
cd $php-5.3.23/ext/grayphp/bin/phpize./configure --with-php-config=$php/bin/php-configmake LDFLAGS=-lgraymake install
配置php.ini:
修改extension_dir和添加gray.so:
gedit php.ini将extension_dir设置为$php/ext/,添加extension=gray.so
测试:
编写test.php:
Apache服务器重启:
apache2/bin/apachectl restart
结尾。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月23日 08时08分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux下EOF写法梳理
2023-02-02
linux下FTP安装与配置
2023-02-02
linux下gcc/g++编译用法
2023-02-02
linux下IPTABLES配置详解 [[转]]
2023-02-02
Linux下jvm、tomcat、mysql、log4j优化配置笔记
2023-02-02
LINUX下KVM的安装与配置
2023-02-02
linux下lamp的搭建及论坛的实现
2023-02-02
Linux下mail服务器应用之邮件系统
2023-02-02
Linux下mail服务器应用之邮件系统的安全性
2023-02-02
Linux下memcache的安装和启动
2023-02-02
linux下mysql5.7修改密码
2023-02-02
linux下mysql8安装
2023-02-02
linux下mysql中文查询得不到结果
2023-02-02
linux下mysql启动和关闭
2023-02-02
Linux下mysql基本操作
2023-02-02
Linux下mysql常用操作命令
2023-02-02
linux下nc的使用
2023-02-02
linux下nodejs安装以及如何更新到最新的版本
2023-02-02
Linux下php动态添加扩展
2023-02-02
Linux下protobuf和 protobuf-c安装使用
2023-02-02