go语言编写php扩展,php扩展,一个helloworld的实现-Go语言中文社区

step 4. 进入php源码的根目录, 编辑文件 vim ext/helloworld/config.m4

去掉这个文件中的几行注释大致会在第16-19行之间,具体版本也许不一样之后保存文件(:wq)

c1b915d52f7ce95cef7526a749a796d9.png

step 5.在php源码根目录执行命令 ./buildconf --force

6b1fe4b5ff68c6abb51375f667bad39c.png

step 6.在php源码的根目录编译php程序,注意命令为   ./configure --with-helloworld

5f088b2165bf39d3b91860b24e5ade16.png

最后出现的error,没有处理

715d9d11fba7a54e8c70e109ab7ba6a1.png

step 7.进入我们的扩展目录helloworld,执行命令   phpize(通过 sudo apt-get install php5-dev 安装 phpize),此时你的扩展目录会生成很多文件,可以用于后期编译。

acbad2bd80e0bfd8c4f6bc94f1db3d77.png

step 8.在helloworld目录编译我们的扩展 ./configure --with-php-config=/usr/bin/php-config(使用你自己环境的php-config) --enable-helloworld

你可以通过一条命令查找你的php-config文件的位置(find / -name php-config)如图:我的地址为/usr/bin/php-config

60ef0c680e960816c9c48e5d115182e8.png

b40f9362cc2cf077d9a5f04d8227caac.png

step 9 .进入扩展helloworld目录,编辑文件php_helloworld.h,在最后一行添加函数   PHP_FUNCTION(helloworldTest);

helloworldTest 可以改成你喜欢的名字,之后保存退出

4276cfed44582c15a3e38a7cc2998066.png

step 10. 用vim 打开helloword.c,在helloworld.c中实现我们的函数,之后 将helloworldTest函数加入到helloworld_functions[]中,保存退出

67c71966ffbbba7e3dd8bde3cab30dc4.png

004f0674ea0b04c3c027dd4a5e22e7f4.png

step 11.执行make命令  make 编译扩展,我在运行的过程中还是比较顺利的。如果出现错误,请认真看前面步骤是否有错,我在第一遍做的时候也有错一般都是前面步骤有问题。

002274932bc3e652ff3f29bfaa760f92.png

step12.将编译生成的helloworld.so 文件复制到你本机的php扩展目录

扩展目录可以通过   php -r "phpinfo();" | grep extension_dir     查看本机php的扩展路径

5547e63fab2e0470e6cf14a0fcece042.png

step 13.配置php.ini 开启 helloworld.so 扩展

查看php.ini 的位置(php -r "phpinfo();" | grep "php.ini" )

92bdead3764b02472343c3be5483b8e2.png

vim 打开 php.ini 文件 sudo vim /etc/php5/cli/php.ini

在文件最后添加扩展 (extension=helloworld.so)

通过 php -r "phpinfo();" | grep helloworld  测试

e27497738920a474ffc083aa7b1405ad.png

step 14 .测试扩展(php -r "echo helloworldTest();")

fa3867c411e33e5632b4f98112206ebc.png

在这个过程中我曾按照原作者的步骤去尝试,结果会出现一个错误

Segmentation fault” (core dumped)

经过调试,时原作者在helloworld.c 文件中添加到helloworld_functions[] 时将 PHP_FE_END 换成了 {null,null,null} 而自己再编译的时候并没有出错却也给PHP_FE_END注释 了,修改之后,重新编译,复制就可以了。

参考原文文章作者讲的很详细,只是在整个过程中确实会有不同的问题出现,只是我们应该有一个解决问题的思路,和一个寻找答案的方法。我也是很久么有碰技术了,近期要帮朋友做两个网站,之余尝试了一下php的扩展,感觉更重要的时思想。

原文参考:http://blog.csdn.net/niujiaming0819/article/details/8543028

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值