编写PHP的C扩展
来源:互联网 发布:yy上的网络兼职是真的吗 编辑:程序博客网 时间:2024/03/29 14:53
为了提高逼格,我决定自己实现PHP的扩展
一、步骤过程
1、编写预定义文件
#vim /root/mark_function_module.def
内容为
int a(int x,int y)
2、生成扩展目录(mark_function_module为模块名)
#cd /usr/local/php/ext
#./ext_skel --extname=mark_function_module --proto=/root/mark_function_module.def
3、修改config.m4
#vim /usr/local/php/ext/mark_function_module/config.m4
去掉dnl的注释
PHP_ARG_ENABLE(mark_function_module, whether to enable mark_function_module support,
Make sure that the comment is aligned:
[ --enable-mark_function_module Enable mark_function_module support])
4、修改 mark_function_module.c
#vim /usr/local/php/ext/mark_function_module/mark_function_module.c
定位/PHP_FUNCTION(a)
修改如下:
PHP_FUNCTION(a)
{
int argc = ZEND_NUM_ARGS();
int x;
int y;
int z;
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z=x+y;
RETURN_LONG(z);
}
5、生成扩展库
#cd /usr/local/php/ext/mark_function_module
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install
6、复制生成的动态库到/usr/local/php/modules目录
生成的动态库会在
# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
复制
cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/mark_function_module.so /usr/local/php/modules/mark_function_module.so
7、修改php.ini
修改
extension_dir = "/usr/local/php/modules"
添加
extension=mark_function_module.so
8、重启apache
# /usr/local/apache/bin/apachectl restart
9、检查是否加载
# /usr/local/php/bin/php -m
10、编写程序测试
# vim /usr/local/apache/htdocs/test_ext.php
内容如下
echo a(1,2);
如果输出为3,表示可以调用了~说好的逼格
二、可能遇到的问题
1、步骤过程第五步的时候
执行/usr/local/php/bin/phpize可能会报错
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script
解决方案
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar -zvxf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar -zvxf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install
然后再在mark_function_module的目录下,执行/usr/local/php/bin/phpize
- 编写PHP的C扩展
- 编写自己的php扩展函数(c)
- 如何编写一个PHP的C扩展
- 用C编写你自己的php扩展
- 如何编写一个PHP的C扩展
- 使用C语言编写PHP 5.5.4的扩展函数
- c/c++编写protobuf 对应的php扩展
- 如何用C语言编写PHP扩展的详解
- 编写php扩展的问题
- Linux环境用C编写PHP扩展
- c编写php扩展简单示例
- 为PHP编写C/C++扩展
- c写php扩展之编译php源码,创建扩展模块,编写扩展demo
- c写php扩展之编译php源码,创建扩展模块,编写扩展demo
- c写php扩展之编译php源码,创建扩展模块,编写扩展demo
- 编写自己的php扩展函数(初级)
- 编写一个简单的php扩展
- 编写基于PHP扩展库的后门
- 主成分分析PCA的matlab实现
- WPF 获取文本像素长度
- 量身定做
- android视频录制 启动一个包名
- 解决办法:warning: Clock skew detected. Your build may be incomplete.
- 编写PHP的C扩展
- 【新手必备】Android四款系统架构工具(开箱即用)
- response.setContentType 与 request.setCharacterEncoding 区别
- 第三方账号登陆-qq_PC篇
- 深入理解JVM学习笔记-垃圾收集器和内存分配策略
- axis2的简单实例
- python 程序打包
- 递归删除文件
- ContentType__charset和pageEncoding的区别2