首页 > 代码库 > php源码的编译

php源码的编译

本片文章主要介绍windows下的php源码的编译。

1.1 编译环境

软件

环境

操作系统

Windows 7 专业版 32bit

Visual studio

2012 专业版

PHP

5.5.2.1 线程安全版本

PHP-SDK

下载

1.2 编译步骤

该配置步骤参考PHP官方文档。

1  解压PHP-sdk文件,分别放置于D:/PHP/PHP-sdk/;

2  在PHP-sdk下打开VS2012 x86本机工具命令行提示(该命令行提示符包含了VS的编译、链接等命令的path路径),跳转至PHP-sdk目录下,输入命令:

bin\phpsdk_setvars.bat

配置PHPsdk的包含路径;

3   运行命令

bin\phpsdk_buildtree.bat phpdev

得到生成配置PHP编译路径,得到phpdev目录,该目录下得到VC6、VC8、VC9三个目录,分别对应不同编译器的编译环境,目录内容如下所示:

─vc9

    ├─x64

    │  └─deps

    │      ├─bin

    │      ├─include

    │      └─lib

    └─x86

        └─deps

            ├─bin

            ├─include

            └─lib

4  由于没有生成vs2012(VC11)的编译目录,因此可以将phpdev文件夹中的vc9文件夹复制为VC11.

5  将PHP源码解压至D:\php\php-sdk\phpdev\vc11\x86 目录下。

6  运行命令

Buildconf.bat

7  该命令会扫描所有可用包的路径,并得到配置文件configure.js。

8  运行命令

configure.bat

该命令可以配置需要安装的扩展,以及SAPI命令。帮助可使用命令:

configure.bat --help

官方给出的建议是

configure --disable-all --enable-cli

其中 cli (command-line interface)是命令行版本的PHP,可以设置 cgi、apache module等sapi接口生成。

9  运行命令

nmake [clean]

该命令类似与linux版本的make,是VS的生成工具。其Makefile程序是以mak结尾的文件。Clean 参数可以清除生成文件。       

若无任何错误,则在源码目录的Release_TS目录下生成了PHP.exe 可执行程序。该程序中包含了配置的所有模块,无需再手动添加dll库。

1.3 可能的问题

  1. 没有包含CL 、MC程序,需要重新打开VS2012 x86本机工具命令行提示
  2. 未找到bison、re2c等程序。re2c是PHP5.5采用的词法分析器,bison是gnu项目的一种语法分析器。该类程序在php-sdk/bin目录下包含。需要重新运行命令
bin\phpsdk_setvars.bat

          添加。

  1. 扩展 calendar中存在文件编码问题。将 phpsource/ext/calendar/ 目录下jewish.c 文件修改编码为utf-8即可。(可以采用notepad++修改)
  2. 编译php5apache2_4模块时,需要下载apache2.4,并需要配置include、lib、bin目录。本文通过添加用户的include、lib、bin(path路径)目录的方法配置。配置方法类似配置path路径。
  3. 在配置mysqlnld扩展时,可能会出现zlib未包含的情况。可以下载zlib,编译,并在deps的bin、include、lib目录下分别放zlib的dll、zlib.h zcon.h、lib文件。

php源码的编译