资讯专栏INFORMATION COLUMN

Windows编译PHP7.2拓展

jsyzchen / 3404人阅读

摘要:编译成功后,在源码的目录下会生成或目录,编译好的及生成的拓展均在此目录下。的文件名为,例如。和默认编译出来的拓展是线程安全的版本位于目录中,如果要编译非线程安全版本,时加入选项。

转载请注明文章出处:https://tlanyan.me/windows-co...
准备工作

https://github.com/Microsoft/...下载PHP-SDK(在右边的“clone or download”点击,选择下方的“download zip”);

https://windows.php.net/downl...下载PHP7.2的源码,此时最新版本是7.2.8,选择“php-7.2.8-src.zip”下载;

https://visualstudio.microsof...选择“visual studio community 2017”,安装过程中选择C++功能。

编译

新建编译目录,例如“D:PHP2Compile”;

将"php-sdk-binary-tools-master.zip"中的文件解压到编译目录下;

按住shift在编译目录内点击右键,选择“open powershell window here”;

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

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

在"phpdev/vc15/x64"目录下新建php-src文件夹,将PHP源码复制到此目录;

切换到php-src目录(cd php-src),执行"phpsdk_deps -u";

在“phpdev/vc15/x64”下建立pecl目录(与PHP源码目录同级),将拓展复制到该目录下;

在PHP源码目录内执行"buildconf";

执行“configure --一些选项”命令配置编译选项,例如"configure --disable-all --enable-cli --enable-cgi --enable-zlib --enable-hash --enable-session --without-gd --with-bz2 --enable-yourext";

执行nmake命令编译PHP及拓展。

编译成功后,在源码的X64目录下会生成“Release”或"Release_TS"目录,编译好的php.exe及生成的拓展dll均在此目录下。dll的文件名为php_xxxx.dll,例如"php_tlanyan.dll"。

TS和NTS

默认编译出来的拓展是TS(线程安全)的版本(位于Release_TS目录中),如果要编译非线程安全版本,configure时加入"--disable-zts"选项。

编译成功后,线程安全版本信息为(php.exe -v输出):

PHP 7.2.8 (cli) (built: Aug 14 2018 10:53:41) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

非线程安全版本输出:

PHP 7.2.8 (cli) (built: Aug 14 2018 11:47:40) ( NTS MSVC15 (Visual C++ 2017) x64 )                                      Copyright (c) 1997-2018 The PHP Group                                                                                   Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
注意事项

原PHP-SDK下载地址https://windows.php.net/downl...只能下载PHP7.1及以前的SDK工具,PHP7.2的工具需从github上下载;

如果已经之前安装过visual studio,执行"phpsdk-vc15-x64.bat"出现"could not determine "vc15" directory"的错误提示,表示未安装VC工具,启动安装工具添加VC支持即可;

编译前可将不需要的拓展删除,加快编译速度;

如果自定义的拓展出现“cannot open include file "win95nt.h"”,可使用这个头文件:https://github.com/nonylene/i...。

参考

https://wiki.php.net/internal...

http://blog.51cto.com/lancelo...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29249.html

相关文章

  • 解决Windows编译PHP7.1拓展的错误

    摘要:安装好,开始按照流程编译拓展,新的问题出现了。参考的方案将其值改成。继续编译,变量初始化错误导致类似问题。所以很有可能是因为变量未设置正确导致的。 转载请注明文章出处:https://tlanyan.me/solve-buil... 接上篇Windows编译PHP7.2拓展,以为编译PHP7.1的拓展应该水到渠成,马到成功。哪知道编译PHP7.1拓展出现了新问题,折腾更超7.2。 第...

    qianfeng 评论0 收藏0
  • Debian9(Stretch) 下编译安装LNMP环境

    摘要:下源码安装一前言之前,我的开发环境是。重新加载权限表将确保所有到目前为止所做的更改将立即生效。然后,和注意,如果是使用二进制包安装了及相应的开发库,不需要指定路径。五参考资料入门教程编译安装编译安装 Debian9下源码安装LNMP 一、前言 之前,我的开发环境是Windows-10+PHP-7.1+Nginx-1.10+MariaDB-10.1。 后面开发需要使用到memcached...

    ideaa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<