検索
ホームページバックエンド開発PHP7VS2015 (vs14) で PHP7 拡張機能を開発する方法

この記事では、VS2015 (vs14) を使用して PHP7 拡張機能を開発する方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

開発前の準備作業:

VS (私は2013を使用)

Cygwin (ダウンロードアドレス: http://www.cygwin) .com/)

IIS7.5 の PHP 実行環境 (テストに使用)

php コンパイル済みプログラムとプリコンパイル済みソース コードを備えており、最新バージョン 7.0.5 (ダウンロード アドレス: http://windows.php.net/download#php-7.0)

コンパイルされたプログラムのパス: E:\vs_c \test\phpext\php-7.0.5-src

コンパイル前のソース コード パス: E:\vs_c \test\phpext\php-7.0.5-nts-Win32-VC14-x86\

手順:

1. Cygwin をインストールします

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ネットワークからインストール

VS2015 (vs14) で PHP7 拡張機能を開発する方法

##C ドライブはデフォルトでインストールされます

VS2015 (vs14) で PHP7 拡張機能を開発する方法

キャッシュはご自由にダウンロードしてください。インストール後は忘れずに削除してください。私はデスクトップに置きました。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

VS2015 (vs14) で PHP7 拡張機能を開発する方法

中国では、 http://mirrors.163.com を選択し、次のステップを最後まで実行してください。

2. 私の php ソース コード ディレクトリ (E:\vs_c \test\phpext\php-7.0.5-src、これは以下でソース コード ディレクトリを表すために使用されます) を見つけて、E を開きます。 \vs_c \test\phpext \php-7.0.5-src\ext\ext_skel_win32.php

VS2015 (vs14) で PHP7 拡張機能を開発する方法

これを cygwin のインストール ディレクトリに変更します。私のディレクトリは C ドライブなので、変更する必要はありません。

3. cmd を実行し、「E:\vs_c \test\phpext\php-7.0.5-src\ext\」と入力し、php.exe ext_skel_win32.php --extname=test を実行します。ここで、test は php を表します。拡大。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

E:\vs_c \test\phpext\php-7.0.5-src\ext を開くと、テスト フォルダーが表示されます。これが拡張機能です。

4. VS を開き、[ファイル] - [新規] - [既存のコードからディレクトリを作成] を選択します。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

C を選択します

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ここで php 拡張機能フォルダーのパスを選択し、プロジェクトに名前を付けます

VS2015 (vs14) で PHP7 拡張機能を開発する方法

「Visual Studio を使用する」を選択し、プロジェクトの種類「ダイナミック リンク ライブラリ」を選択します。 (DLL) プロジェクト」は、完了するまでデフォルトで次のステップに進みます。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

#5. 初めて開くとエラーがたくさん出てきますので、プロジェクトの設定を始めましょう。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

まず、プロジェクト ソリューション構成をリリースに変更します。

VS2015 (vs14) で PHP7 拡張機能を開発する方法

プロジェクト プロパティを右クリックし、[C/C]、[全般] の順にクリックします。 、追加のインクルード ディレクトリ、

VS2015 (vs14) で PHP7 拡張機能を開発する方法

# を編集し、次の PHP ソース ディレクトリを追加します (実際のディレクトリは開発者自身のディレクトリに従います):

E: \vs_c \test\phpext\php-7.0.5-src

E:\vs_c \test\phpext\php-7.0.5-src\main

E:\vs_c \test \phpext\ php-7.0.5-src\TSRM

E:\vs_c \test\phpext\php-7.0.5-src\Zend

プロジェクト プロパティを右クリックし、C/ C、プリプロセッサ、プリプロセッサ定義を編集し、次の変数を追加します:

ZEND_DEBUG=0

PHP_EXTENSION

PHP_WIN32

ZEND_WIN32

HAVE_

TEST=1 (赤い部分は拡張機能名に変更する必要があります。拡張機能名に変更しないとphpが認識しません)

COMPILE_DL_

TEST (ここの赤い部分は拡張機能名に変更する必要があります。拡張機能名に変更しないと PHP が認識しません)

ZTS (この変数を追加するとスレッド セーフがオンになり、追加しないとスレッド セーフがオフになります。この変数を追加するかどうかは、コンパイルした PHP がスレッド セーフであるかどうかに基づいて判断できます。 ps: 応答せずに損失を被りました。 .PHP は拡張子を認識しません)

VS2015 (vs14) で PHP7 拡張機能を開発する方法

ソリューションを生成します。エラー メッセージには、「config.w32.h」が見つからないことが示されます。「config.w32.h」を検索します。 h" をソース コード ファイル ディレクトリに移動し、E:\vs_c \test\phpext\php-7.0.5-src\win32\build\ フォルダーで "config.w32.h.in" を見つけてコピーします。ファイルを E:\vs_c \test \phpext\php-7.0.5-src\main\ フォルダーにコピーし、次の ".in"

ソリューションを再度生成すると、エラー メッセージ LNK1120

# が表示されます。 ##エラー 7 エラー LNK1120: 5 つの未解決の外部コマンド E:\vs_c \test\phpext\php-7.0.5-src\ext\test\Release\phptest.dll 1 1 phptest

プロジェクトを右クリックプロパティ、コネクタ、入力、追加の依存関係、編集、php5.lib へのパスを入力します (このファイルは、php がコンパイルされた後のプログラム フォルダー、ルート ディレクトリの dev フォルダーにあります)

注: 順序は次のとおりです。拡張機能が php で動作できるようにするため、一致する実行環境は、php 実行環境のコンパイル済みバージョン (php7.0.5 は VC14 によってコンパイルされています) によって異なります。これは、E:\vs_c\test\phpext\php-7.0 の設定です。 .5-src\main\ フォルダー。w32.h ファイルに追加します:

#define PHP_COMPILER_ID "VC14"

Open E:\vs_c \test\phpext\php-7.0.5-src\ext\test\test.c


この段落を検索します。 コード:

PHP_FUNCTION(confirm_test_compiled)
{
    char *arg = NULL;
    int arg_len, len;
    char *strg;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {
        return;
    }

    len = spprintf(&strg, 0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "test", arg);
    RETURN_STRINGL(strg, len, 0);
}

確認_test_compiled を test_echo に変更します。

このコードを再度検索します:

const zend_function_entry test_functions[] = {
    PHP_FE(confirm_test_compiled,    NULL)        /* For testing, remove later. */
    PHP_FE_END    /* Must be the last line in test_functions[] */
};

内部の確認_test_compiled を test_echo に変更します


ソリューションを生成するには、プロジェクト ルート ディレクトリの Release フォルダーで独自の php 拡張機能 phptest.dll を見つけ、それを php の ext フォルダーにコピーし、php.ini で構成します。

extension=phptest.dll

IIS を再起動し、新しいサイトを作成し、その中に新しい test.php ファイルを作成します

<?php 
echo test_echo("123");

実行して結果を取得します:

VS2015 (vs14) で PHP7 拡張機能を開発する方法##この test_echo 関数は独自のカスタム関数であり、必要に応じて独自の拡張機能を開発して PHP のパフォーマンスを向上させることもできます。

推奨学習:

php ビデオ チュートリアル

以上がVS2015 (vs14) で PHP7 拡張機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
PHP7のどのバージョンが新しいオペレーターを導入しましたPHP7のどのバージョンが新しいオペレーターを導入しましたMar 03, 2025 pm 04:37 PM

この記事では、PHP 7の新しいオペレーターであるNull Coalescing(??)、Spaceship(&lt; =&gt;)、およびnull coulescing assignment(?? =)演算子について詳しく説明しています。 これらは、ヌルのチェックと比較を簡素化することにより、コードの読みやすさとパフォーマンスを向上させます、indirectl

PHP7のさまざまなバージョンのメモリ消費に対する影響は何ですかPHP7のさまざまなバージョンのメモリ消費に対する影響は何ですかMar 03, 2025 pm 04:35 PM

PHP 7のマイナーバージョンの違いにより、微妙なメモリ消費の変動が得られます。 一般に、新しいバージョンはZend EngineとGarbage Collectionの最適化を介してパフォーマンスとメモリ効率を向上させますが、その影響はアプリケーションに依存します。 意味

パフォーマンスを改善するためにPHP7コードを最適化する方法パフォーマンスを改善するためにPHP7コードを最適化する方法Mar 03, 2025 pm 04:28 PM

この記事では、パフォーマンスのためのPHP7コードの最適化を検討します。 非効率的なデータベースクエリ、I/O操作、メモリリークなどの一般的なボトルネックに対処します。 ソリューションには、効率的なコーディングプラクティス、データベース、キャッシュ戦略、Asynchが含まれます

PHP 7でセッションを効果的に使用する方法は?PHP 7でセッションを効果的に使用する方法は?Mar 10, 2025 pm 06:20 PM

この記事では、session_start()、$ _session、session_destroy()、セキュアクッキー処理などのコア機能をカバーする効果的なPHP 7セッション管理について詳しく説明します。 HTTPS、セッションID再生、sなどのセキュリティベストプラクティスを強調しています

PHP7バージョンの更新で修正されたバグPHP7バージョンの更新で修正されたバグMar 03, 2025 pm 04:36 PM

PHP 7は、多数のバグに対処し、パフォーマンスを向上させ、セキュリティを強化することにより、以前のバージョンで大幅に改善されました。 主な改善には、書き換えられたZend Engine 3、最適化されたメモリ管理、洗練されたエラー処理が含まれます。遺伝子中

PHP7バージョンの更新は、セッション処理にどのような影響を与えますか?PHP7バージョンの更新は、セッション処理にどのような影響を与えますか?Mar 03, 2025 pm 04:31 PM

この記事では、PHP7でのセッションの処理を検討し、Zendエンジンの強化に起因するパフォーマンスの改善を強調します。 セキュリティとスケーラビリティのためのアップグレードと詳細最適化戦略による潜在的な互換性の問題について説明します

New RelicなどのツールでPHP 7のパフォーマンスを監視する方法は?New RelicなどのツールでPHP 7のパフォーマンスを監視する方法は?Mar 10, 2025 pm 06:28 PM

この記事では、New Relicを使用してPHP 7アプリケーションのパフォーマンスを監視する方法について説明します。 New Relicのセットアップ、APDEXスコアや応答時間などのキーパフォーマンスインジケーター(KPI)、トランザクショントレースを介したボトルネックの識別、エラートラックの詳細

PHP 5.6からPHP 7にアップグレードする方法は?PHP 5.6からPHP 7にアップグレードする方法は?Mar 10, 2025 pm 06:29 PM

この記事では、PHP 5.6をPHP 7にアップグレードし、バックアップ、サーバーの互換性のチェック、アップグレードメソッドの選択などの重要な手順(パッケージマネージャー、コンパイル、コントロールパネル、またはWebサーバーの構成)を強調しています。 ポテンティアに対処します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン