scws目前只提供php 5.4及以下的php扩展。求助无果,无奈只得自己想办法编译。
看了scws的文档,问了问作者,然后开始动手。
首先,需要有个php的开发环境。这一点可以看这里:https://wiki.php.net/internals/windows/stepbystepbuild
第一步,你要有一个Visual Studio。
对应php版本。
php 5.4是vs 2008.
php 5.5 or php 5.6 需要 vs 2012
php 7 + 需要 vs 2015
第二步,找到你的vs的命令行工具 ,打开,备用。
第三步,下载php source。 这里下: http://windows.php.net/download/
当然,要下你想下的版本。
第四,下载binary tools。 http://windows.php.net/downloads/php-sdk/
要下日期最新的。
第五,在第四步的时候顺道把php depends也下了。
当然是对应你php版本的。
第六步,配置目录。
把binary tools解压。比如解压到d:\php-sdk\
用第二步打开的命令,进入这个目录。 cd d:\php-sdk
执行命令 bin\phpsdk_buildtree.bat phpdev
d:\php-sdk下多出个目录phpdev
里面有vc6 vc8 vc9三个目录。
把d:\php-sdk\phpdev\vc9 复制成 d:\php-sdk\phpdev\vc11
然后在vc11里创建 x86 x64 两个目录。
这里我们只用x86平台的。所以把php source解压到x86目录里。
例如: d:\php-sdk\phpdev\vc11\x86\php-5.6.21-src
然后把php depends文件也解压,覆盖x86下在的deps目录。
下面就可以编译了。
第七步,编译。
cd d:\php-sdk
执行 bin\phpsdk_setvars.bat
然后再进入 d:\php-sdk\phpdev\vc11\x86\php-5.6.21-src
执行 buildconf
执行 configure --help 可以看下命令行帮助。
创建自己的配置: configure --disable-all --enable-cli
如果需要把某个扩展编译进php就在后面跟上相应的选项,这些选项都会出现在--help里。
最后执行 nmake来编译。
没报错,那就是成功了。
编译完会多出个目录Release_TS,里面就是编译的好的php。 包括exe和dll,具体有些啥要看 configure的时候你指定了啥。
第八步,将scws解压到 d:\php-sdk\phpdev\vc11\x86\。
没错,跟php-5.6.21-src同一目录。
第九步,打开vs.根据你的php版本来。
php 5.6.x是vs 2012,php 7是vs 2015。
第十步,打开scws\win32\下面的vs工程文件。
提示需要转换,那就转换。
编译选项选 release ,x86。
工程里有两个项目 libscws 和scws
然后打开scws的属性页,新建一个编译配置,可以从现有的复制一个过去。起名叫Release_PHP7。
把相关的附加目录,附加库的路径都改成 php-5.6.21-src。
第十一步,修改xdict.c文件
把#include <unistd.h>移到#ifndef WIN32的后面去。
然后,编译吧。
能不能成功看造化。
前面之所以要先编译下php源代码,是因为不编译,有些文件不会出来,比如 config_win32.h,比如php5ts.lib,等等。
如果提示缺少zlib,可以去下个windows的zlib库,附加到工程里。
php_scws.dll虽然可以生成,但是实际能不能用还没试。
-end-