第一步 生成扩展demo Runing起来
生成扩展demo
我们以php-7.4.1版本为例。
进入 cd php-7.4.1/ext 此目录,有一个名为 ext_skel.php。我们用此脚本生在扩展demo步骤如下
./ext_skel.php --ext gwalker
这样就在 ext目录下生成 gwalker扩展目录,目录内容如下:
[root@gw gwalker]# ls
config.m4 config.w32 gwalker.c php_gwalker.h tests
接下来进行编译,安装到php扩展中
[root@gw gwalker]# phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
./configure --with-php-config=/data/php/bin/php-config
make && make install
修改php.ini 把生成的so加关联到扩展中去
extension=/data/php/lib/php/extensions/debug-non-zts-20190902/gwalker.so
这样就把gwalker扩展加到php环境中去了。可以通过cli命令验证查看
./php -m | grep gwalker
gwalker
也可以重新启动php-fpm(或php内置web服务),通过浏览器验证
phpinfo();
new.png
运行demo扩展
打开gwalker.c源码文件阅读代码发现生成的demo给咱们实现好了,gwalker_test1()与gwalker_test2()函数。
...
/* { { { void gwalker_test1()
*/
PHP_FUNCTION(gwalker_test1)
{
ZEND_PARSE_PARAMETERS_NONE();
php_printf("The extension %s is loaded and working!\r\n", "gwalker");
}
/* }}} */
/* { { { string gwalker_test2( [ string $var ] )
*/
PHP_FUNCTION(gwalker_test2)
{
char *var = "World";
size_t var_len = sizeof("World") - 1;
zend_string *retval;