VS2019 开发PHP 拓展(一)环境准备
准备工作
- 下载 “php-sdk-binary-tools”
在右边的“Clone or download
”点击,选择下方的“Download ZIP
”
- 下载 “PHP源码”
此时最新版本是7.4.4
,选择“php-7.4.4-src.zip
”下载,
根据 Build your own PHP on Windows
Visual C++ 14.0 (Visual Studio 2015) for PHP 7.0 or PHP 7.1.
Visual C++ 15.0 (Visual Studio 2017) for PHP 7.2, PHP 7.3 or PHP 7.4.
Visual C++ 16.0 (Visual Studio 2019) for master.
即 vs2019 只能编译 php-src 的 master 分支,所以需要下载 master 分支源码,在右边的“Clone or download
”点击,选择下方的“Download ZIP
”
- 下载 “Visual Studio 2019”
选择 “社区
” 下的 “免费下载
” 进行下载,
-
将
php-sdk-binary-tools-master.zip
解压到D:\zodream\php-sdk-binary-tools
-
按住shift在编译目录内点击右键,选择“
在此处打开Powershell窗口
”; -
执行”
.\phpsdk-vs16-x64.bat
”,成功后提示符从“>
”变成“$
”; -
执行“
phpsdk_buildtree phpdev
”,成功后目录中会多一个“phpdev
”目录,命令行的目录自动切换到“phpdev/vc16/x64
”; -
在“
phpdev/vc16/x64
”目录下新建php-src
文件夹,将PHP源码复制到此目录; -
切换到
php-src
目录(cd php-src
),执行“phpsdk_deps -u
”; -
在“
phpdev/vc16/x64
”下建立pecl
目录(与PHP源码目录同级),此目录放拓展的源码。如果为自己开发的拓展,请参考【下一章】。
编译流程
- 将拓展源码复制到该目录下(
D:\zodream\php-sdk-binary-toolsphpdev\vc16\x64\pecl
);
如果为自己开发的拓展,则不需要这一步,下一步会自动发现这些拓展,直接配置编译选项则可以
- 在PHP源码目录内(
D:\zodream\php-sdk-binary-tools\phpdev\vs16\x64\php-src
)执行”buildconf
”; configure --help
查看能够使用的配置选项,包括你自己的插件什么的- 执行“
configure –一些选项
”命令配置编译选项,例如”configure –-disable-all –-enable-cli –-enable-cgi –-enable-zlib –-enable-session –-without-gd -–with-bz2 –-enable-yourext
”;
编译 php
我的编译php 参数
configure --disable-all --enable-cli --with-mysqlnd -–enable-cgi –-enable-zlib –-enable-session --with-bz2 --with-mysqli --enable-pdo --with-pdo-mysql --enable-redis --enable-zodream --enable-fileinfo --with-curl --with-gettext --enable-mbstring --with-openssl --with-imagick --with-pthreads
编译 PECL 拓展, 例如: apcu
- 执行
nmake
命令编译PHP及拓展, - 如果希望压缩生成的 PHP 生成和扩展,则"nmake"之后也会运行:
nmake snap
- 完成一些更改后重新编译, 清理旧的编译二进制文件
nmake clean
, 如果需要更新"configure"脚本buildconf --force
, 然后重复编译 3、 4 步
编译成功后,在源码的X64目录下会生成“Release
”或“Release_TS
”目录,编译好的php.exe及生成的拓展dll均在此目录下。dll的文件名为php_xxxx.dll,例如“php_zodream.dll
”。
默认编译出来的拓展是TS(线程安全)的版本(位于Release_TS
目录中),如果要编译非线程安全版本,configure时加入“–disable-zts
”选项。
转载请保留原文链接: https://zodream.cn/blog/id/101.html