如何使用C语言来编写PHP的扩展,PHP作为一门开源语言
2021-06-27
本文分享如何使用C语言编写PHP扩展。作为一门开源语言,社区中有很多热爱开源开发的爱好者。 PHP 在 web 领域如此强大的主要原因之一一直是站稳脚跟。这是因为 PHP 有许多强大的扩展。除了官方自己提供的扩展,还有更多的开源大牛加入,比如韩天峰的,伯德的yaf,yar等等,具体步骤就不多说了。
第一步
到官网下载PHP源代码文件并解压到电脑某个文件夹中,在根文件夹中找到如下文件\php7\ext\.php。注意:此脚本为我们提供了生成自定义扩展的框架。
第二步
因为有些命令只支持系统,所以我们需要安装这个软件来帮助我们支持一些命令,并将它们设置为系统环境变量。
执行命令 .php --=demo。注意:首先将PHP添加为系统环境变量
ext目录下会生成demo扩展文件夹,里面包含要编写的demo扩展的基本文件。
第三步
修改demo.c文件,找到C语言的函数(d)在这个方法下面添加你的方法代码,例如:
1
2
3
(演示){
("C");
}
然后修改如下方法
1
2
3
4
5
[]={
(d,NULL)/* 对于,. */
(demo,NULL)//这里添加一行代码
/* 必须是 [] 中的最后一行 */
};
注意:为了让扩展匹配php运行环境,必须基于你的php运行环境的编译版本(php7是VC14编译的),在文件夹E:\php7\main\.w3 2.h文件中添加:
1
#“VC14”
第四步
使用编辑器编译DLL文件
加载你的 PHP 扩展文件路径
将解决方案切换到
右击右边的项目属性,添加PHP源代码目录(看你的实际路径)
E:\php7
E:\php7\main
E:\php7\TSRM
E:\php7\Zend
右键单击项目属性、C/C++、预处理器、预处理器定义,编辑并添加以下变量:
=0
=1(这里红色部分需要改成你的扩展名,如果不改成你的扩展名php printer.dll扩展,php不会识别)
(这里红色部分需要改成你的扩展名,如果不改成你的扩展名,php不会识别)
ZTS(添加这个变量是为了开启线程安全,不添加则关闭线程安全)
在E:\php7\\\文件夹中找到“.w32.h.in”,把这个文件复制到E:\php7\main\文件夹,去掉下面的“.in”
右键项目属性php printer.dll扩展,链接器,输入,附加依赖,编辑,把php7.lib的路径放进去(这个文件在php编译后的文件夹下,根目录下的dev文件夹下)目录)
步骤 5
最后点击 in完成编译。
将\ext\demo\下的demo.dll文件放入PHP中并添加扩展。
1
2
3
演示();
我有时间想出如何编译so扩展文件,一点PHP,一点技术分享。