在windows平台上构建自己的PHP(php5.3+)
这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild
顺便提一句,wiki.php.net有很多精彩的内容,想深入了解php的同学千万不要错过:)
准备工作
在windows平台上编译php,需要三样准备工作:
1,合适的编译环境,包括安装一个编译器、正确的SDK以及对应的binary tools
2,编译PHP需要用到的第三库、头文件
3,PHP源代码
构建环境
这是在windows平台上编译php最困难的部分,因为建立这样的编译环境需要大量的磁盘空间,可能会有数G
需求:
- Microsoft Visual C++,官方的PHP版本支持VC++6.0和VC++9.0(即VC++2008),Express版本的也行。MinGW和其他的编译器是不被支持的。
- 正确的windows SDK 或者Platform SDK,SDK需要与VC版本对应,详见https://wiki.php.net/internals/windows/windowssdk
- 编译时用到的binary tools,详见http://windows.php.net/downloads/php-sdk/
注:
最新的php5.5可以用VC++9或者VC++11编译,不过5.5尚未正式发布。
如果使用的是VC6,则需要安装Windows Server Feb.2003 SDK,如果使用的VC9则需安装SDK6.1
构建步骤
1,安装vs2008
2,安装windows sdk 6.1
3,获得php 5.3源码,可以从此处获取snapshot(先不要解压)
4,创建文件夹c:\php-sdk
5,解压binary-tools.zip 至c:\php-sdk文件夹中。binary-tools.zip可以从此处获取(http://windows.php.net/downloads/php-sdk/)。解压后C:\php-sdk中应该包含bin,script,share等子目录。
6,打开windows sdk 6.1 shell,直接下述指令:
PHP 5.2, 5.3 and 5.4:
setenv /x86 /xp /release
PHP 5.5+:
setenv /x86 /2008 /release
7,
cd c:\php-sdk\
8,
bin\phpsdk_setvars.bat
9,
bin\phpsdk_buildtree.bat php53dev
10,现在解压第3步中下载的snapshot至C:\php-sdk\php53dev\vc9\x86文件夹中。解压完成之后,目录路径形如C:\php-sdk\php53dev\vc9\x86\php5.3-xyz。
11,在C:\php-sdk\php53dev\vc9\x86中,有一个deps文件夹。下载编译所依赖的一些libraries,并且解压至其中。这些libraries可以从http://wiki.php.net/internals/windows/libs获得。确保解压完成之后,deps下包含/include和/lib目录。(注:笔者直接从http://windows.php.net/downloads/php-sdk/下载了deps-5.3-vc9-x86.7z可以顺利编译通过)
12,继续在windows-sdk-shell中运行
cd C:\php-sdk\php53dev\vc9\x86\php5.3-xyz
13,
buildconf
14,查看编译选项
configure --help
15,根据自己的需要输入构建指令:
configure --disable-all --enable-cli 编译最简单的PHP内核并且只支持cli运行方式
configure --disable-all --disable-zts --enable-cli --enable-debug --enable-mbstring --enable-session --enable-sockets --enable-json
(注: 一些扩展需要lib,头文件甚至其他程序,详见libs ,下载自己所需的版本并且解压至deps文件夹c:\php-sdk\php53\vc9\x86\deps)
16,
nmake
17,如果你需要压缩编译好的php文件,继续执行:
nmake snap
18,编译完的PHP位于C:\php-sdk\php53dev\vc9\x86\php5.3-SNAPSHOTTIME\Release_TS目录。
修改并重新编译
1,清除上次的编译结果
nmake clean
2,如果你需要重新config
buildconf --force
3,输入新的configure配置
configure --disable-all --enable-cli --enable-$remains
4,编译
nmake
如果只编译最精简的PHP(仅enable-cli),编译成功之后,可以观察一下编译了哪些EXT,SAPI:
除了standard(标准扩展),这个php版本只含有date,ereg,pcre,reflection,SPL几个扩展,它们的源码都可以在php-src/ext中找到。
在windows平台上构建自己的PHP(php5.3+)的更多相关文章
- 在windows平台上构建自己的PHP(仅适用于php5.2)
构建步骤 1, 安装vs2008 2, 安装windows sdk 6.1 3, 下载php 5.2源码,可以从此处获取Releases(先不要解压) 4, 下载bindlib_w32.zip,htt ...
- 在Windows平台上安装Node.js及NPM模块管理
1. 下载Node.js官方Windows版程序:http://nodejs.org/#download 从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...
- Windbg是windows平台上强大的调试器
基础调试命令 - .dump/.dumpcap/.writemem/!runaway Windbg是windows平台上强大的调试器,它相对于其他常见的IDE集成的调试器有几个重要的优势, Windb ...
- 分享一些 Windows 平台上的神器
下面分享一些 Windows 平台上日常开发使用的软件,有些软件我自认为是神器,可以大大提高效率. 编辑器类软件 IntelliJ IDEA IntelliJ IDEA 内部集成 Java 开发环境, ...
- MySQL 在Windows平台上的安装及实例多开
MySQL在Windows平台上的安装及实例多开 by:授客 QQ:1033553122 测试环境 Win7 64 mysql-5.7.20-winx64.zip 下载地址: https://cd ...
- 如何在微软Windows平台上打造出你的Linux开发环境(转载)
如何在微软Windows平台上打造出你的Linux开发环境 投递人 itwriter 发布于 2013-12-10 11:18 评论(1) 有348人阅读 原文链接 [收藏] « » 英文原文: ...
- (转)在Windows平台上安装Node.js及NPM模块管理
本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...
- 龙芯GO!龙芯平台上构建Go语言环境指南
龙芯软件生态系列——龙芯GO!龙芯平台上构建Go语言环境指南2016-07-05 龙芯中科1初识Go语言Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Gries ...
- 在NVIDIA-Jetson平台上构建智能多媒体服务器
在NVIDIA-Jetson平台上构建智能多媒体服务器 Building a Multi-Camera Media Server for AI Processing on the NVIDIA Jet ...
随机推荐
- 【Lua】Lua + openresty遍历文件目录
OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 今天用OpenRest ...
- <数据挖掘导论>读书笔记1
数据预处理: 1.聚集:将两个或者多个对象合并成单个对象. 2.抽样:一种选择数据对象子集进行分析的常用方法.抽象方法:简单随机抽样 和渐进抽样 3.维度约:我觉得翻译的不好,英文明细是降维.降维技术 ...
- Django models.py创建数据库
创建完后初始化数据库 在命令行里输入: 回车后出现 继续命令行输入:
- 跨文件代码跳转插件:Ctags
1.通过package control搜索Ctags 2.Enter安装,等待其安装完成 3.下载ctags可执行程序,链接:https://pan.baidu.com/s/1jIINAxo 密码:4 ...
- 登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期” 或提示 密码过期
登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期” 或提示 密码过期. [原因/触发因素] 确定是由于oracle11g中默认在default概要文件中设置了“PASSWORD ...
- Angular4 step by step.1
1.官网地址 :https://angular.cn/guide/quickstart 2.在线学习地址:https://embed.plnkr.co/?show=preview 3.效果截图哇哈哈
- 会话技术Cookie
1.会话技术 1>什么是会话技术: 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话. 2>作用: 会话技术就是记录这次会话中客户端的状态与数据的. Cookie:数 ...
- Spring学习笔记:Spring整合Mybatis学习PPT(三:整合思路)
三.Spring-Mybatis的整合思路
- POI 2000 ------Stripes
Stripes Time Limit:1000MS Memory Limit:30000KBTotal Submit:94 Accepted:43 Description Stripes is a t ...
- flex固定底部栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...