在windows10下php7.3+编译phalcon扩展(Zephir)
官方上提供了Linux/Unix/Mac 的编译过程,也就是说基于 linux 版本都可以,唯独缺失windwos环境下编译过程(README里只教如何下载成品dll);本文很简单,就是在windows 环境下编译php7.3+ 的扩展:phalcon。
0x00 作者开发环境
- windows10 x64
- visual studio2017社区版
- php-7.3.2
- composer
- php-7.3.2-src
- php-sdk-2.1.10
- cphalcon-master
0x01 安装visual studio2017社区版
如果已经安装完成visual studio2017社区版,并且勾选了C++的桌面开发,那么请跳至0x02
- 请到微软VS的官方地址下载VS2017社区版(个人免费使用无需上网搜索破解)
- 安装过程请注意:
- 勾选配置系统环境(为后期节省很多环境配置时间)
- 勾选使用C++的桌面开发,默认安装的选项即可
- 安装过程可能会重启数次或一次
0x02 下载相关PHP工具
- 下载并配置php-7.3.2二进制包:https://windows.php.net/download/
- 添加到环境变量中:X:\php\dist\7.3.2
- 注意在php.ini里打开openssl,composer下载vendor前提条件
- 下载php-7.3.2开发源码包:https://windows.php.net/download/
- 下载安装composer:https://getcomposer.org/download/
- 命令行进入php目录
- 下载安装zephir:composer require phalcon/zephir:dev-master
- 添加到环境变量中:X:\php\vendor\bin
- 下载并配置php-sdk工具包:https://github.com/Microsoft/php-sdk-binary-tools
- 为了方便演示,本文使用了php-sdk版本为2.1.10的TAG成品包
- 下载phalcon源码包:https://github.com/phalcon/cphalcon
完成后的目录结构为:
X:\php\src\7.3.2 #php源码
.\phalcon #phalcon源码
.\sdk\2.1.10 #php-sdk工具
.\vendor #zephir
.\dist\7.3.2 #php二进制
0x03 执行步骤
step 1
# 打开VS2017开发人员命令行工具
>cd X:\php\sdk\2.1.10
>phpsdk-vc15-x64.bat
$> phpsdk_buildtree phpdev
$> cd phpdev\vc##\x##\php-src
$> phpsdk_deps -u
- 路径含义 X:\php-sdk\phpdev\vc##\x##:
- vc## 编译工具版本(eq vc15)
- x## CPU版本 (x86 or x64)
- phpsdk_deps -u中的第一个ICU有20多MB,国外资源会比较耗时间,请耐心等待
- 或可通过https://windows.php.net/downloads/php-sdk/deps/ 下载对应包
- 将下载后的包解压覆盖到deps目录里
- 将X:\php\src\7.3.2里的源码,复制一份至X:\php-sdk\phpdev\vc##\x##\php-src里
step 2
- 将X:\php\phalcon\build目录里对应版本的文件,复制一份至X:\php-sdk\phpdev\vc##\x##\php-src\ext\phalcon
- 如果喜欢自己编译,新命令行至X:\php\phalcon目录下:zephir generate,根据zephir生成新C源码
- cd .\build
- php gen-build.php,根据C源码生成新的PHP扩展可用源码文件
- 本文选择的是:X:\php\phalcon\build\php7\64bits里的文件
- 切换至之前的VS2017开发人员命令行工具
step 3
# VS2017开发人员命令行工具下
$> cd .\php-src
$> buildconf
$> configure --help #这一步可以忽略
$> configure --disable-all --enable-cli --enable-pdo --enable-phalcon=shared
$> nmake
- 编译完成后,在 X:\php-sdk\phpdev\vc##\x##\php-src\Release_TS目录中看到了php_phalcon.dll动态链接库了
- 将php_phalcon.dll动态链接库放到X:\php\dist\7.3.2的ext文件夹中,并在php.ini中加入extension = php_phalcon.dll
- 重启本地环境,完成!