太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

PHP扩展开发——环境部署

  • 时间:2017-08-07
  • 发布:简书
  • 来源:简书

PHP扩展开发——环境部署

PHP扩展开发是基于C语言,自己对C/C++比较熟悉,从扩展开发这个方向了解PHP Zend虚拟机底层实现应该是一条比较好的途径。本文主要介绍在Linux、Windows环境如何部署PHP扩展开发环境,以及我遇到的一些问题。
1、Linux平台环境配置
Linux平台配置过程很容易,本节以centos 4.3为例
step1:下载PHP源码包,并解压
step2:使用ext_skel生成工程框架
./ext_skel --extname=myext
(1)在.h文件中声明导出函数:
PHP_FUNCTION(sqlapm);
(2)在.c文件中实现导出函数
PHP_FUNCTION(sqlapm)
{
php_printf("sqlapm....");
}
step3:编译生成.so文件
修改config.m4文件将10、11、12三行最前面的dnl删除掉
phpize
./configure --with-php-config=..../php/bin/php-config
make
make test
然后在工程下面module目录下生myext.so文件,拷贝至lib/php/extensions/no-debug-non-zts-20121212目录下,修改php.ini文件, php -m 验证模块是否加载。
2、Windows平台环境配置
Linux平台配置方式非常容易,但在Linux下查看php源码,开发效率效率较低,Windows下面VS IDE非常强大,智能提示都很方便。许多教程介绍VC++6.0的配置过程,但是VC++6.0平台不支持64位编译,而且win7以上兼容性不好,本节介绍的是VS2010配置过程。
step1:使用ext_skel生成工程框架
php ext_skel_win32.php --extname=myext
如果生成出错,请检查下面两点:
(1)事先要安装cygwin,并且修改ext_skel_win32.php中的$cygwin_path路径;
(2)源码目录名不能包含空格;
step2:打开myext.dsp工程文件、编译工程
(1)这时提示main/config.win32.h文件缺少,新建config.win32.h文件,添加下面两行:
#define SIZEOF_LONG 4
#define PHP_COMPILER_ID "VC11"
第二行的VC11版本不是根据VS2010的VC10版本,而是要与windows二进制包中的php5ts.lib编译使用的VC版本一致,下面会讲php5ts.lib。
(2)再次编译,提示缺少php5ts_debug.lib
php5ts.lib来自同版本php二进制包dev/目录下php5ts.lib文件,php5ts_debug.lib对应php debug包dev下的php5ts_debug.lib文件。
(3)再次编译,可能会提示“无法解析的外部符号”
这种错误在C++中很常见,一般都是.lib库没有正确包含了,你会发现前面已经包含了php5ts.lib文件,这里出错的原因就是php5ts.lib是64位lib包,将VS2010编译方式改成x64即可顺利编译。因此不建议使用VC++6.0,直到VS2005微软才支持x64编译方式。
step3:编译dll生成在TS_Release或TS_Debug目录下
Windows下配置环境事项:
建议安装Visual Assist X插件,智能智能提示非常强大;
注意php binary包的VC编译器版本及编译位数(32/64);
VS的编译方式也要与php binary包编译方式保持一致(Release/Debug);
列表项目config.win32.h需要改成binary VC编译器版本;
编程开发作为一门十分火热的行业,php作为开发类的一个语言,现在受到越来越多人的关注,选择太原php培训班,不再孤军奋战,轻轻松松做IT高薪白领。太原计算机培训带领有明确目标的学子迈向成功之路!
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!


上一篇:妙用PHP中的那些小接口
下一篇:体验 PHP under .NET Core

HHVM 3.23 发布,高速的 PHP 执行引擎

PHP 支付类库 PaySDK v1.0.1,优化结果处理,修复问题

CakePHP 3.5.6 发布,PHP 开发框架

太原php培训之常用框架--Laravel框架

选择城市和中心
贵州省

广西省

海南省