Windows10使用Zephir开发PHP8.1扩展
参考
- https://github.com/zephir-lang/zephir (zephir官方库)
- https://github.com/zephir-lang/zephir/blob/development/WINDOWS.md (zephir windows 说明)
- chatgpt
- https://www.80shihua.com/archives/2535 (linux下使用Zephir开发扩展)
- https://zhuanlan.zhihu.com/p/24611638 (在 windows 下使用 zephir 写 php7 扩展,包含php_devpack下载地址,php_sdk下载地址)
- https://blog.csdn.net/jason19905/article/details/113483962 (windows10环境使用Zephir编写PHP7.4扩展)
- https://zhuanlan.zhihu.com/p/60764142 (使用 Zephir 轻松构建 PHP 扩展)
- https://blog.csdn.net/jiqiren_dasheng/article/details/103775488 (MinGW-w64 C/C++编译器下载和安装)
- https://blog.csdn.net/StudyOgre/article/details/89057590 (Visual Studio 2019 下载地址)
- https://github.com/zephir-lang/zephir/issues/2019 (检测配置问题)
- https://github.com/zephir-lang/zephir/issues/1564
- https://github.com/zephir-lang/zephir/issues/1154
- https://github.com/microsoft/php-sdk-binary-tools/releases/tag/php-sdk-2.2.0 (php_sdk,测试直接
git clone https://github.com/microsoft/php-sdk-binary-tools/
没有bison.exe
)
遇到的问题
- 直接命令行执行
zephir build
提示找不到ext\configure.js
不可以直接在命令行执行该命令,需要在 Visual Studio 2019 的命令行执行。 - 提示 nmake 不被识别。
需要在 Visual Studio 2019 的命令行执行。 - phpize 不被识别。
将 php_devpack 加入到系统变量。 - Using unknown MSVC version 19.36.32537
一开始下载的是 Visual Studio 2022,切换到 Visual Studio 2019 并在 Visual Studio 2019 的命令行执行命令。 - bison is required
直接 clonse 的 https://github.com/microsoft/php-sdk-binary-tools ,这里面好像没有 bison.exe,最后通过指定版本下载解决的。https://github.com/microsoft/php-sdk-binary-tools/releases/tag/php-sdk-2.2.0g - 检测配置问题
进入 init 项目目录,本文章是 hello.
# 进入ext
cd hello/ext
# 检测配置是否正确
configure
- php_sdk停止更新了。
- error LNK2001: 无法解析的外部符号 __imp__php_info_print_table_row
Visual Studio 2019 命令行开始使用的是 x86_x64, 后面切换为与php一致的 x64。 - 打包错误详情可以通过
init
创建的项目中的compile-errors.log
查看. - 配置完毕后还是不行就重启下。
环境
软件/系统 | 版本 | 说明 |
---|---|---|
windows | 10 | |
php | 8.1.9-Win32-vs16-x64 | |
php_sdk | php-sdk-binary-tools-php-sdk-2.2.0 | 已停止更新 下载 |
php_devpack | php-8.1.26-devel-vs16-x64 | 下载 |
composer | 2.4.4 | 下载 |
Visual Studio | Visual Studio 2019 | 下载 |
zephir | zephir-0.17.0 | 下载 |
zephir-parser | zephir_parser-php-8.1-ts-windows2019-vs16-x64 | 下载 |
vs code | 1.84.2 | |
Zephir for VSCode | v1.6.3 | vs code 扩展 |
步骤
准备工作
- 下载 php ,将 php 加入系统 PATH。
- 开启 php 扩展(在
zephir composer install
的时候会提示需要哪些扩展):
extension=gmp
extension=pdo_sqlite
- 下载 php_sdk ,加入系统变量与系统PATH。(注意,需要加到两个地方,一个是系统变量,一个是系统PATH中)
# 系统PATH
C:\xxxx\php-sdk-binary-tools-php-sdk-2.2.0\bin
C:\xxxx\php-sdk-binary-tools-php-sdk-2.2.0\msys2\usr\bin
# 系统变量
php_sdk C:\xxx\php-sdk-binary-tools-php-sdk-2.2.0
- 下载 php_devpack,将路径加入到系统PATH与系统变量:
这一步是安装 phpize
# 加入系统PATH
C:\xxxx\php-8.1.26-devel-vs16-x64
# 加入系统变量
php_devpack C:\xxxx\php-8.1.26-devel-vs16-x64
- 安装 Visual Studio 2019,并开启使用
C++ 的桌面开发
:
- 下载 Zephir Parser ,解压压缩包,将
php_zephir_parser.dll
放到 php 的ext
目录中,修改php.ini
开启扩展。修改完毕后可以用过命令行php -m
查看是否正常开启扩展。
[Zephir Parser]
extension=php_zephir_parser.dll
- 下载 zephir ,执行依赖安装命令,安装完毕后加入到系统PAYH。加入完成后可以通过命令行测试是否成功。
# zephir目录下手动执行安装依赖
composer install
# 手动加入系统PATH
C:\xxxx\zephir-0.17.0
# 命令行测试是否正常安装
> zephir
_____ __ _
/__ / ___ ____ / /_ (_)____
/ / / _ \/ __ \/ __ \/ / ___/
/ /__/ __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
/_/
Zephir 0.17.0 by Andres Gutierrez and Serghei Iakovlev (source)
...
编写与打包
- vs code 安装扩展
Zephir for VSCode
. - 创建项目
zephir init hello
- 编写代码
项目目录\hello\hello.zep
namespace Hello;
class hello
{
public static function say()
{
echo "hello world";
}
}
- 打开 Visual Studio 2019 命令行
x64 Native Tools Command Prompt for VS 2019
,我的 php 版本是 x64,所以使用 x64 的命令行(x86_x64命令行测试失败)。
# 每一行都是单独一个命令
%PHP_SDK%\bin\phpsdk_setvars
# 进入 init 项目的目录内
cd hello
# 打包
zephir build
- 将生成的
C:\xxxx\hello\ext\x64\Release_TS\php_hello.dll
添加到 php 的ext
目录下,并在php.ini
启用扩展:
extension=hello
- 命令行查看扩展是否启用:
php -m
测试结果
- 创建
demo.php
<?php
\Hello\hello::say();
- 命令行运行
# 执行
php demo.php
# 输出
hello world
博 主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17869327.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17869327.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步