Posted by:
努力记

努力记,通过记录,计划,让自己的努力可以触碰彩虹!

6,706

PHP:扩展编译Windows/Linux

  • 2013-05-24
  • 暂无评论

PHP的编译方式分为:静态编译动态编译

在window下

只能通过加载dll动态链接库的方式进行功能扩展,dll文件必须与当前的版本吻合,如:具体版本号,ts或nts,vc6或vc9

#首先安装cygwin
#下载php的源码,需要和安装环境中的php版本一致
#修改源码目录下的ext_skel_win32.php,如果是cygwin默认安装,可以不用修改
$cygwin_path = ‘c:\cygwin\bin’;
#在命令行执行
${php_install}\php.exe ${php_souce}/ext/ext_skel_win32.php –extname=extend_name
#生成扩展框架,用于生成dsp文件用于编译,如果已有扩展代码,直接放置在该目录下

一些可能发生的错误

  • #../main/config.w32.h': No such file or directory
    1. #需要本机编译php源码
    2. #下载http://www.php.net/extra/bindlib_win32.zip
    3. #下载http://www.php.net/extra/win32build.zip
    4. #全部解压在${php_source}/win32/build,并将该目录设置为环境变量
    5. #在命令行运行${php_source}/buildconf.bat
    6. #在命令行运行${php_source}/configure.bat
    7. #会在${php_source}/main下生成config.win32.h这个文件
  • 用visual studio2010会报错,找不到cl.exe
    1. 使用vistual studio2010提供的命令行工具,再次执行命令即可
    2. 或C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat
  • 如果想要No Thread Safe 模式就在上面的命令最后加上参数 --disable-zts
  • config.w32.h 里面 #define PHP_COMPILER_ID 改成和你正在用的 PHP 编译版本相同的编译器ID,例如VC6或者VC9

在linux下

2种编译方法都可以,并且phpize就是为了动态编译而存在的

#先进入源码目录
Cd ${php_souce}/ext
#生成扩展框架,如果已经有扩展代码,直接放置在该目录下
./ext_skel –extname=extend_name
		#编写扩展代码
#进入扩展代码目录
${Php_install}/bin/Phpize
./configure –with-php-config=${php_install}/php-config
Make 
Make test
#在当前目录的modules目录中已经生成extend_name.so文件
#复制该文件进入php的扩展目录
Mv modules/extend_name.so ${php_install}/lib/extensions/
#编辑php配置文件,加载该扩展
Extension=”extend_name.so” 
		#直接安装
Make install
#重启php进程,让该模块生效

 



back up ↑

无觅相关文章插件,快速提升流量