Windows で PHP 拡張コンポーネントを作成して使用する

開発環境

1.win 7 32ビット
2.Visual Studio 2019 (C++を使用したデスクトップ開発コンポーネントがインストールされている)

準備

1.php-sdk-binary-tools(v2.1.9)
2.phpソースコード(v8.0.17)
3.php x86非スレッドセーフ(v8.0.17)

コンポーネントを作成する

1. コンポーネントのソースコードを生成する

cd php-8.0.17-src/ext // 进入php源码的ext目录
php ext_skel.php --ext myext // 生成组件源码

2. コンパイル環境を開きます

cd php-sdk2.1.9  // 打开生成组件工具
phpsdk-vc15-x86.bat // 运行工具

3. コンポーネントの生成

buildconf
configure --disable-all --enable-cli --enable-myext=shared --disable-zts
nmake

ここで説明する必要がある点は 2 つあります。1 つは –enable-myext=shared です。shared の理由は、共有可能な別個の DLL ファイルを生成するためです。もう 1 つは、-disable-zts は安全でないファイルを生成する DLL コンポーネントです。スレッド。

ここまででphp_myext.dllコンポーネントが生成されましたが、php-8.0.17-src\Release配下に、-disable-ztsを付けないとRelease_TS配下になります。

テストコンポーネント

1. php-8.0.17-nts-Win32-vs16-x86 を開きます。
2. php_myext.dll を ext ディレクトリにコピーします
。 3. php.ini-production を php.ini に変更し、次のオプションを変更します。

extension_dir = "ext"
extension=myext

4. 新しいテスト ファイル test.php を作成します。

$myext = extension_loaded('myext');
var_dump($myext);
test1();
$res = test2();
var_dump($res);

5. テストが成功したかどうか

./php test.php

上記のディレクトリはすべて php-8.0.17-nts-Win32-vs16-x86 に基づいています。

予防

1. 異なる PHP バージョンは、異なる Visual Studio に対応します。
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.

インストールが完了したら、「C++ によるデスクトップ開発」コンポーネントを忘れずにインストールしてください。PHP 開発バージョンに従って Visual Studio を選択することを忘れないでください。そうしないと、生成されたコンポーネントが使用できなくなります。

2.php-sdk-binary-toolsの選択

現在の最新バージョンは 2.2+ ですが、2.1.9 を選択した理由は、2.2 より上のバージョンには 64 ビットのオペレーティング システムが必要だからです。

参考リンク

1. Windows 上で独自の PHP を構築する
2. Windows 用 PHP
3. php-sdk-binary-tools
4. Visual Studio 2019

おすすめ

転載: blog.csdn.net/a7442358/article/details/123707119