• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

在Windows系统中使用VC9、VC11编译32位、64位PHP及其扩展

php 搞代码 3年前 (2022-01-23) 107次浏览 已收录 0个评论

项目中需要使用runkit模块实现AOP,但是团队成员的开发环境都是Windows,而runkit模块官方没有提供Windows环境下的dll扩展,只能自己编译。

下面是编译过程的分类总结。(操作系统环境为Windows 10 64位中文旗舰版)

  • PHP的编译版本 这里的版本指的不是PHP的发行版本,如5.3、7.0,而是指编译时所使用的编译器、程序架构和是否为线程安全。 这些信息可以在phpinfo中打印出来。 上图中所使用的PHP,是使用Miscrosoft Visual 2012中的MSVC11编译的,程序架构为x86(即32位),非线程安全(NTS)。

    本文来源gao!%daima.com搞$代*!码$网3

    搞代gaodaima码 上图中的PHP,是使用Miscrosoft Visual 2012中的MSVC11编译的,程序架构为x64(即64位),线程安全(TS)。 上图略有不同,没有专门的列表项说明编译器版本、程序架构,只能从编译时的配置中看到相关信息。这里的PHP,是使用Miscrosoft Visual 6中的MSVC6编译的,程序架构为x86(即32位),线程安全(Thread Safety = enabled)。 最后这一张,是使用Miscrosoft Visual 2008中的MSVC9编译的,程序架构为x86(即32位),线程安全(TS)。 本文只讨论MSVC9和MSVC11编译两种情况。

  • 准备PHP-SDK和PHP源码 以下步骤无论编译哪种版本的PHP,都是必须的。
    • 下载PHP-SDK: 下载地址在 http://windows.php.net/downloads/php-sdk/ 中可以找到,下载其中的 php-sdk-binary-tools-20110915.zip
    • 解压到C:\php-sdk文件夹
    • 打开命令行,执行如下命令:

      cd c:\php-sdk\

      bin\phpsdk_buildtree.bat phpdev

      会在c:\php-sdk文件夹下生成phpdev文件夹,其中包含vc6、vc8、vc9子文件夹。

      如果使用MSVC11编译PHP,就复制c:\php-sdk\phpdev\vc9到c:\php-sdk\phpdev\vc11。

      如果使用MSVC14编译PHP,就复制c:\php-sdk\phpdev\vc9到c:\php-sdk\phpdev\vc14。

    • 下载相应版本的PHP的编译时依赖包,下载地址见 http://windows.php.net/downloads/php-sdk/ 。 将其解压至相应编译文件夹下的x86或x64文件夹下,覆盖其中的deps文件夹。注意要与要编译的PHP发行版本和程序架构一致,如编译php5.4.x的32位版本则解压deps-5.4-vc9-x86.7z,如编译php5.5.x的64位版本则解压deps-5.6-vc11-x64.7z,依此类推。 php5.4.x和php5.3.x通常需要使用vc9编译,因此其依赖文件解压到c:\php-sdk\phpdev\vc9\x86或c:\php-sdk\phpdev\vc9\x64。 php5.5.x和php5.6.x通常需要使用vc11编译,因此其依赖文件解压到c:\php-sdk\phpdev\vc11\x86或c:\php-sdk\phpdev\vc11\x64。 而php7.0.x则需要vc14编译,因此其依赖文件解压到c:\php-sdk\phpdev\vc14\x86或c:\php-sdk\phpdev\vc14\x64。
    • 下载所需要的PHP源文件,下载地址在 http://windows.php.net/download/http://php.net/downloads.phphttp://php.net/releases/http://windows.php.net/downloads/releases/archives/ 几处都可以找到。 将其解压制相应的编译文件夹下。 例如: 将 php-5.4.45.tar.gz 解压到c:\php-sdk\phpdev\vc9\x86\php-5.4.45或c:\php-sdk\phpdev\vc9\x64\php-5.4.45下,以分别编译其32位和64位版本。 将 php-5.6.16.tar.gz 则解压到c:\php-sdk\phpdev\vc11\x86\php-5.6.16或c:\php-sdk\phpdev\vc11\x64\php-5.6.16下。
    • 如果是编译PHP扩展,则到相应的地址下载源码,本文是以runkit为例,下载地址在 http://pecl.php.net/package/runkit 。 将下载到的源码解压到PHP源码的ext文件夹下,本例是分别解压到c:\php-sdk\phpdev\vc9\x86\php-5.4.45\ext\runkit、c:\php-sdk\phpdev\vc9\x64\php-5.4.45\ext\runkit、c:\php-sdk\phpdev\vc11\x86\php-5.6.16\ext\runkit、c:\php-sdk\phpdev\vc11\x64\php-5.6.16\ext\runkit。
  • 准备编译环境:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址