Fork Me On Github
zodream 编程技术 C 2020-03-22

VS2019 开发PHP 拓展(一)环境准备

准备工作

  1. 下载 “php-sdk-binary-tools

在右边的“Clone or download”点击,选择下方的“Download ZIP

  1. 下载 “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

  1. 下载 “Visual Studio 2019

选择 “社区” 下的 “免费下载” 进行下载,

  1. php-sdk-binary-tools-master.zip 解压到 D:\zodream\php-sdk-binary-tools

  2. 按住shift在编译目录内点击右键,选择“在此处打开Powershell窗口”;

  3. 执行”.\phpsdk-vs16-x64.bat”,成功后提示符从“>”变成“$”;

  4. 执行“phpsdk_buildtree phpdev”,成功后目录中会多一个“phpdev”目录,命令行的目录自动切换到“phpdev/vc16/x64”;

  5. 在“phpdev/vc16/x64”目录下新建php-src文件夹,将PHP源码复制到此目录;

  6. 切换到php-src目录(cd php-src),执行“phpsdk_deps -u”;

  7. 在“phpdev/vc16/x64”下建立pecl目录(与PHP源码目录同级),此目录放拓展的源码。如果为自己开发的拓展,请参考【下一章】。

编译流程

  1. 将拓展源码复制到该目录下(D:\zodream\php-sdk-binary-toolsphpdev\vc16\x64\pecl);

如果为自己开发的拓展,则不需要这一步,下一步会自动发现这些拓展,直接配置编译选项则可以

  1. 在PHP源码目录内(D:\zodream\php-sdk-binary-tools\phpdev\vs16\x64\php-src)执行”buildconf”;
  2. configure --help 查看能够使用的配置选项,包括你自己的插件什么的
  3. 执行“configure –一些选项”命令配置编译选项,例如”configure –-disable-all –-enable-cli –-enable-cgi –-enable-zlib –-enable-session –-without-gd -–with-bz2 –-enable-yourext”;

编译 php

configure --disable-all --enable-cli --enable-$remains

我的编译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

configure --disable-all --enable-cli --enable-apcu
  1. 执行nmake命令编译PHP及拓展,
  2. 如果希望压缩生成的 PHP 生成和扩展,则"nmake"之后也会运行:nmake snap
  3. 完成一些更改后重新编译, 清理旧的编译二进制文件 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”选项。

点击查看全文
0 37 0