php源码的编译
本片文章主要介绍windows下的php源码的编译。
1.1 编译环境
|
软件 |
环境 |
|
操作系统 |
Windows 7 专业版 32bit |
|
Visual studio |
2012 专业版 |
|
PHP |
|
|
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 可能的问题
- 没有包含CL 、MC程序,需要重新打开VS2012 x86本机工具命令行提示
- 未找到bison、re2c等程序。re2c是PHP5.5采用的词法分析器,bison是gnu项目的一种语法分析器。该类程序在php-sdk/bin目录下包含。需要重新运行命令
bin\phpsdk_setvars.bat
添加。
- 扩展 calendar中存在文件编码问题。将 phpsource/ext/calendar/ 目录下jewish.c 文件修改编码为utf-8即可。(可以采用notepad++修改)
- 编译php5apache2_4模块时,需要下载apache2.4,并需要配置include、lib、bin目录。本文通过添加用户的include、lib、bin(path路径)目录的方法配置。配置方法类似配置path路径。
- 在配置mysqlnld扩展时,可能会出现zlib未包含的情况。可以下载zlib,编译,并在deps的bin、include、lib目录下分别放zlib的dll、zlib.h zcon.h、lib文件。
php源码的编译的更多相关文章
- net-snmp源码VS2013编译添加加密支持(OpenSSL)
net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...
- net-snmp源码VS2013编译添加加密支持(OpenSSL)(在VS里配置编译OpenSSL)
net-snmp源码VS2013编译添加加密支持(OpenSSL) snmp v3 协议使用了基于用户的安全模型,具有认证和加密两个模块. 认证使用的算法是一般的消息摘要算法,例如MD5/SHA等.这 ...
- Hadoop2.x源码-编译剖析
1.概述 最近,有小伙伴涉及到源码编译.然而,在编译期间也是遇到各种坑,在求助于搜索引擎,技术博客,也是难以解决自身所遇到的问题.笔者在被询问多次的情况下,今天打算为大家来写一篇文章来剖析下编译的细节 ...
- 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码
前言 其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...
- 【转】Android用NDK和整套源码下编译JNI的不同
原文网址:http://www.devdiv.com/android_ndk_jni_-blog-99-2101.html 前些天要写个jni程序,因为才几行代码,想着用ndk开发可能容易些,就先研究 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- 从源码(编译)安装golang 二
h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...
- MySQL源码包编译安装
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...
- 通过清华大学镜像下载Android源码并编译源码
之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾...趁着周末,准备在Ubuntu虚拟机上下载编译源码. 之前下源码时,有了解一些Androi ...
- Android : 修改内核源码 and 编译、打包成新的boot.img
一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...
随机推荐
- 关于有趣的windows.h
system 函数: 这个函数差不多就是调用 cmd (命令提示符). 当然,不一定要在程序中调用,用 txt 打入文本( 不用加system() )后改后缀名为 cmd 后运行即可. Win 键 + ...
- .netCore下的jwt的梳理-->借鉴于“老张的哲学”
之前在公司的项目中有用到jwt进行token验证,但是公司里用的框架已经集成好了jwt,所以对jwt的的了解不够清晰,感觉还是隔着一层.在看了“老张的哲学”的jwt部分后对jwt的认识才更加深刻了一些 ...
- frida报错frida.InvalidArgumentError: device not found问题解决方案
一.问题描述 python安装好frida框架后,在安卓端启动了frida-server,启动要hook的应用,在cmd中执行python脚本,报错frida.InvalidArgumentE ...
- ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)
引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...
- 【转】JS内置对象方法
String内置对象的方法 1. concat() concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串 var str = "Hello"; var out ...
- 内网渗透之信息收集-windows系统篇
windows 用户相关 query user #查看当前在线的用户 whoami #查看当前用户 net user #查看当前系统全部用户 net1 user #查看当前系统全部用户(高权限命令) ...
- OpenGL 实践之贝塞尔曲线绘制
说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...
- go package 学习笔记 —— strconv(string与其他基本数据类型(int, float, bool)的转换)
strconv实现了go中基本数据类型与string之间的转换. How to use in go go doc:https://godoc.org/strconv import "strc ...
- 第一个爬虫经历----豆瓣电影top250(经典案例)
因为要学习数据分析,需要从网上爬取数据,所以开始学习爬虫,使用python进行爬虫,有好几种模拟发送请求的方法,最基础的是使用urllib.request模块(python自带,无需再下载),第二是r ...
- iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。
目 录 1. 概述... 2 2. iNeuOS平台演示... 2 3. 设备驱动管理... 2 4. 服务驱动管理... 3 5. 云组 ...