平时在Windows系统上做PHP开发,都是直接使用WAMP的继承环境。最近需要用到一个PHP扩展,也没找到现成的DLL文件,于是想着自己编译一个。首先,需要安装一个Visual Studio
Visual Studio
上大学的时候,老师教我们用 VC6.0 ,我就在自己电脑上装了个 Visual Studio 2010*,功能全选,占了好十几GB空间,然后就没怎么用了,看来只是想体验一下进度条的优雅。后来用上了 *Sublime ,以为此生足矣,没想到今天还是要求 Visual Studio 2015, 不愧为天下第一IDE。
安装过程略去:
熟悉的界面:
其实这里与Visual Studio IDE没有多大关系,主要是要使用它的控制台:
PHP SDK
PHP For Windows,是一个PHP官方提供Windows系统支持的网站。这里可以找到,已经编译好的、可以在Windows系统上直接运行的PHP,PECL上各种PHP扩展的DLL文件,还有在Windows系统上编译PHP时需要用到的一些工具。
在Windows系统上编译PHP,需要准备以下材料:
- PHP源码,比如php-7.0.14.tar.gz
- PHP SDK,比如php-sdk-binary-tools-20110915.zip
- 编译时依赖,比如deps-7.0-vc14-x64.7z
编译步骤
工作空间
首先,把php-sdk-binary-tools-20110915.zip
里面的内容解压到一个文件夹中,例如:D:\php-sdk-binary-tools
。然后打开VC2015 x64 CMD
,执行以下命令:
1 | D: |
再把deps-7.0-vc14-x64.7z
里面的内容解压到D:\php-sdk-binary-tools\phpdev\vc14\x64
,php-7.0.14.tar.gz
里面的内容解压到D:\php-sdk-binary-tools\phpdev\vc14\x64\php-7.0
,这时候,目录结构大概如下:
1 | D:\php-sdk-binary-tools\ |
开始编译
打开VC2015 x64 CMD
,执行以下命令:
1 | D: |
configure --help
会输出可用的选项,按需选择。
编译扩展
如果需要编译某个PHP扩展,比如名字叫someone_ext
, 可以将其源码放置到D:\php-sdk-binary-tools\phpdev\vc14\x64\php-7.0\ext\someone_ext
中,然后执行以下命令:
1 | D: |
正常情况下,configure --help
的输出中someone_ext
这个PHP扩展的相关选项,执行configure
带上相关选项即可。只编译someone_ext
这个PHP扩展,不重新编译PHP,大概的命令如下:
1 | configure --disable-all --enable-someone_ext=shared |
后记
一开始提到初衷是想编译一个PHP扩展的,但是上文只字未提,主要是因为,在编译完PHP后,下载扩展的源码时才发现,它不支持Windows系统(只有config.m4
,没有config.w32
),欲哭无泪。这个扩展名字叫pecl-gearman,万事求不得人,有空自己写一个吧(估计写一个config.w32
就行了吧),挽勉自尊。