本片文章主要介绍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源码的编译的更多相关文章

  1. net-snmp源码VS2013编译添加加密支持(OpenSSL)

    net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...

  2. net-snmp源码VS2013编译添加加密支持(OpenSSL)(在VS里配置编译OpenSSL)

    net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...

  3. Hadoop2.x源码-编译剖析

    1.概述 最近,有小伙伴涉及到源码编译.然而,在编译期间也是遇到各种坑,在求助于搜索引擎,技术博客,也是难以解决自身所遇到的问题.笔者在被询问多次的情况下,今天打算为大家来写一篇文章来剖析下编译的细节 ...

  4. 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码

    前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...

  5. 【转】Android用NDK和整套源码下编译JNI的不同

    原文网址:http://www.devdiv.com/android_ndk_jni_-blog-99-2101.html 前些天要写个jni程序,因为才几行代码,想着用ndk开发可能容易些,就先研究 ...

  6. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  7. 从源码(编译)安装golang 二

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  8. MySQL源码包编译安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...

  9. 通过清华大学镜像下载Android源码并编译源码

    之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾...趁着周末,准备在Ubuntu虚拟机上下载编译源码. 之前下源码时,有了解一些Androi ...

  10. Android : 修改内核源码 and 编译、打包成新的boot.img

    一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...

随机推荐

  1. notepad++ 字符处理: 字符前后删除 或 删除未包含字符串的行

    字符串前后删除 删除str之后的所有字符用,打开替换(Ctrl+H) :str.*$ 删除str之前的所有字符用:^.*str 如果是其他字符就把str替换为其他字符 ---------------- ...

  2. https信任库采坑记

    最近在客户现场遇到一个棘手的http问题,现象很直接,访问某https的时候报错: javax.net.ssl.SSLPeerUnverifiedException: peer not authent ...

  3. vue项目npm run dev 报错Uncaught SyntaxError: Unexpected token <

    目前代码所处位置是micro分支,该分支是从dev分支直接拉下来进行npm run dev的,而dev分支是可以正常运行的,网上的诸多解释是babel转义时候报错,其实对比可见,两个分支不同的地方应该 ...

  4.  FPGA边沿检测Verilog代码

    FPGA边沿检测Verilog代码(上升沿,下降沿,双边沿) 实现思路:用两个一位寄存器直接异或可以实现 代码实现: ​ module edge_detect( input clk, input rs ...

  5. MVC项目中存储公用链接方法

    小白成长记第一篇,随手记录一下小常识 将固定地址写在web.config文件appSettings中 Controller调用方法:

  6. C++ 选择排序的理解

    #include<stdio.h> #include <iostream> using namespace std; void swap(int *a, int *b) //元 ...

  7. Python进阶学习之面向对象

    目录 面向对象 私有属性 面向对象   python也有面向对象的编程,它与C++中的类有点相似.它也只是运算符重载,继承. class Test: num=0 def __init__(self): ...

  8. Ubuntu下实现歌词解析

    我们要明确目的,实现歌曲歌词同步. 1.将歌词文件一次性去取到内存中.(以周董的“简单爱”为例) a.用fopen打开歌词文件 FILE *fp  = fopen(“简单爱.lrc”,"r& ...

  9. 动手建立jdbc连接

    工具:Idea  Navicat 环境:jdk 1.8  mysql-5.7.27-winx64 创建一个project 打开navicat开启连接. 在idea中导入数据库. 导入好后可以开始连接了 ...

  10. http详解和分析

    1.http是什么? http 是一种超文本传输协议原名是这个Hypertext Transfer Protocol -- HTTP/1.1 可以百度查看http的RFC文档编号为RFC-2616 连 ...