php添加第三方语言的LINUX下so扩展
发表于 2019-07-23 09:58:51 , 分类:技术文档
把第三方SO库文件放入LINUX公共第三方库目录usr/local/lib,最好在放一份入usr/lib, 然后
执行 ldconfig
下载本机安装的PHP安装包
进入安装包主目录下EXT目录 例如: cd php-5.6.30/ext
./ext_skel --extname=LQ009 等号后面是你自己定义的扩展的名字
进入LQ009目录 vim config.m4
PHP_ARG_ENABLE(lq009 , whether to enable lq009 support, 去掉这个 dnl
dnl Make sure that the comment is aligned:
[ --enable-hello Enable lq009 support]) 去掉这个 dnl
在LQ009目录执行phpize命令,命令在PHP环境目录bin下如:/www/wdlinux/phps/56/bin/phpize
打开 php_lq009 .h,加入函数声明:
PHP_FUNCTION(hello_add); hello_add最好是你SO库内函数名
编辑lq009.c
zend_function_entry lq009_functions[] = {
PHP_FE(confirm_lq009_compiled, NULL) /* For testing, remove later. */
PHP_FE(hello_add, NULL) /* For testing, remove later. 注意 hello_add为你PHP调用的函数名*/
{NULL, NULL, NULL} /* Must be the last line in hello_functions[] */};
然后在 lq009.c 的最末尾书写hello_add函数的内容:
PHP_FUNCTION(hello_add)
{
long int a, b;
long int result;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &a, &b) == FAILURE) {
return;
}
result = cc_add(a, b);
RETURN_LONG(result);
}
然后进行下面的操作
./configure --with-php-config=/www/server/php/56/bin/php-config
make LDFLAGS=-lLQ009 LQ009 ,生成的SO文件名带有LIBLQ009.so,这里不带LIB 是你用第三方语言生成的SO文件名,记住要先把生成的LQ009放入LINUX公共第三方库目录usr/lib,usr/local/lib
make install
把LQ009目录 modules 里面.so文件拷贝如PHP环境目录如/php/lib/php/extensions/no-debug-non-zts-20090626/下面
service php-fpm restart 重启PHP
编写PHP调用SO库如如库内函数 echo hello_add(5,4);