開発環境
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