Windows10使用Zephir开发PHP8.1扩展

发布时间 2023-12-01 11:25:31作者: 夏秋初

参考

注意

环境

软件/系统 版本 说明
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 扩展

步骤

准备工作

  1. 下载 php ,将 php 加入系统 PATH。
  2. 开启 php 扩展(在zephir composer install 的时候会提示需要哪些扩展):
extension=gmp
extension=pdo_sqlite
  1. 下载 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

image

  1. 下载 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
  1. 安装 Visual Studio 2019,并开启使用 C++ 的桌面开发:
    image

  2. 下载 Zephir Parser ,解压压缩包,将php_zephir_parser.dll放到 php 的 ext目录中,修改 php.ini开启扩展。修改完毕后可以用过命令行 php -m 查看是否正常开启扩展。

[Zephir Parser]
extension=php_zephir_parser.dll
  1. 下载 zephir ,执行依赖安装命令,安装完毕后加入到系统PAYH。加入完成后可以通过命令行测试是否成功。
# zephir目录下手动执行安装依赖
composer install
# 手动加入系统PATH
C:\xxxx\zephir-0.17.0
# 命令行测试是否正常安装
> zephir
 _____              __    _
/__  /  ___  ____  / /_  (_)____
  / /  / _ \/ __ \/ __ \/ / ___/
 / /__/  __/ /_/ / / / / / /
/____/\___/ .___/_/ /_/_/_/
         /_/

Zephir 0.17.0 by Andres Gutierrez and Serghei Iakovlev (source)
...

编写与打包

  1. vs code 安装扩展 Zephir for VSCode.
  2. 创建项目
zephir init hello
  1. 编写代码 项目目录\hello\hello.zep
namespace Hello;

class hello
{
    public static function say()
    {
        echo "hello world";
    }
}
  1. 打开 Visual Studio 2019 命令行 x64 Native Tools Command Prompt for VS 2019,我的 php 版本是 x64,所以使用 x64 的命令行(x64_x86命令行测试失败)。
# 每一行都是单独一个命令
%PHP_SDK%\bin\phpsdk_setvars
# 进入 init 项目的目录内
cd hello
# 打包
zephir build
  1. 将生成的 C:\Users\treas\Documents\Code\my\php-ext\hello\ext\x64\Release_TS\php_hello.dll 添加到 php 的 ext 目录下,并在 php.ini 启用扩展:
extension=hello
  1. 命令行查看扩展是否启用:
php -m

测试结果

  1. 创建 demo.php
<?php
\Hello\hello::say();
  1. 命令行运行
# 执行
php demo.php
# 输出
hello world