编写PHP扩展库步骤

笔记:

1、下载PHP源码,然后解压缩,假设路径为:/home/wyq/php-7.3.0,给目录添加可执行权限,

chmod -R +x ./

2、进入/home/wyq/php-7.3.0/ext/目录,最好给

然后执行

 ./ext_skel --extname=wyq

其中wyq就是扩展库的名称,wyq.so,

3、之后会在ext目录下生成wyq目录,进入wyq目录查看会生成如下文件:

CREDITS  EXPERIMENTAL  config.m4  config.w32  wyq.c  wyq.php  php_wyq.h  tests

4、编写config.m4文件,把对应的注释去掉,dnl是注释的意思

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(hello, for hello support,
dnl Make sure that the comment is aligned:
dnl [  --with-hello             Include hello support])

dnl Otherwise use enable:

PHP_ARG_ENABLE(hello, whether to enable hello support,
Make sure that the comment is aligned:
[  --enable-hello           Enable hello support])

由于wyq库没有引用其他的库,所以这里把下面的三行注释去掉

5、编写wyq.c文件,有一段代码如下:

PHP_FUNCTION(confirm_wyq_compiled)
{
	char *arg = NULL;
	size_t arg_len, len;
	zend_string *strg;

	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &arg, &arg_len) == FAILURE) {
		return;
	}

	strg = strpprintf(0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "wyq", arg);

	RETURN_STR(strg);
}

这个就是扩展函数 confirm_wyq_compiled

在PHP文件里面直接调用这个函数就可以了

6、然后进入ext/hello目录,执行phpize(该命令在编译PHP的时候会自动生成),

最后就是正常的./configure --with-php-config=/php_prefix/bin/php-config && make && make install

最终会生成wyq.so文件

7、还有一种编译方法就是回到源码根目录,执行./configure --enable-wyq

你可能感兴趣的:(PHP)