目次
PHP 拡張機能を開発する場合、ext_skel を使用すると、拡張構造スケルトンの作成が完了します。
構成ファイル config.m4 は、UNIX ビルド システムに、拡張機能でサポートされる構成オプションと拡張機能で必要な追加ライブラリ、
この時点で、PHP は /usr/local/php ディレクトリにインストールされています。ディレクトリに入ると、次のファイルが表示されます:

PHP拡張機能の開発(1)

Jun 23, 2016 pm 01:27 PM

まず、gcc コンパイラー、適切なバージョンの bison などがシステムにインストールされていることを確認する必要があります。以下は、ソース コードから PHP をコンパイルしてインストールするために実行する必要がある基本的なコマンドです。基本的な拡張スケルトン

PHP 拡張機能を開発する場合、ext_skel を使用すると、拡張構造スケルトンの作成が完了します。

# cd php-src# ./buildconf# ./configure --enable-debug --enable-maintainer-zts --enable-cli# make# make install
ログイン後にコピー

注: ext_skel コマンド ファイルは、ソース ファイルの
ext

ディレクトリにあります。

ここでの --extname パラメータは、作成される拡張機能の名前です。拡張機能の名前は小文字とアンダースコアで構成され、
は ext ディレクトリ内で一意である必要があります。


たとえば、ext_demo_1 という名前の PHP 拡張機能は次のとおりです。

$ ./ext_skel./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]           [--skel=dir] [--full-xml] [--no-help]  --extname=module   这里的module是要创建的扩展名称  --proto=file       这里的file文件包含了要创建的函数的原型  --stubs=file       generate only function stubs in file  --xml              generate xml documentation to be added to phpdoc-cvs  --skel=dir         创建扩展骨架的目录  --full-xml         generate xml documentation for a self-contained extension (not yet implemented)  --no-help          don't try to be nice and create comments in the code and helper functions to test if the module compiled
ログイン後にコピー

$ cd ..
  • $ vi ext/extdemo1/config.m4
  • $ ./buildconf
  • $ ./configure --[with|enable]-extdemo1
  • $ make
  • $ ./php -f ext/extdemo1/extdemo1.php
  • $ vi ext/extdemo1/extdemo1.c
  • $ make
  • ext/extdemo1/config.m4 に満足するまでステップ 3 ~ 6 を繰り返し、

    ステップ 6 でモジュールが PHP にコンパイルされたことを確認します。その後、

    コードの作成を開始し、最後の 2 つのステップを必要なだけ繰り返します。

    これで、新しい拡張機能ディレクトリ ext_demo_1 が ext ディレクトリに表示されます:
  • /vagrant/ext$ ./ext_skel --extname=ext_demo_1Creating directory ext_demo_1Creating basic files: config.m4 config.w32 .svnignore ext_demo_1.c php_ext_demo_1.h CREDITS EXPERIMENTAL tests/001.phpt ext_demo_1.php [done].To use your new extension, you will have to execute the following steps:
    ログイン後にコピー

    現時点では、拡張機能をコンパイルして渡すことはできないため、最初に config.m4 ファイルを編集する必要があります。

    構成ファイル config.m4

    構成ファイル config.m4 は、UNIX ビルド システムに、拡張機能でサポートされる構成オプションと拡張機能で必要な追加ライブラリ、

    どのソース ファイルが含まれるかなどを伝えます。このファイルは GNU の autoconf を使用します。 syntax to dnl 先頭の動作コメントは、角括弧 ([ と ]) で囲まれた文字列です。


    autoconf 構文については AUTOCONF ドキュメントを参照してください

    /vagrant/ext/ext_demo_1$ lsconfig.m4   CREDITS       ext_demo_1.c    php_ext_demo_1.hconfig.w32  EXPERIMENTAL  ext_demo_1.php  tests
    ログイン後にコピー

    上記は autoconf の設定ファイルです。最初のマクロ PHP_ARG_ENABLE には 3 つのパラメータが含まれています:

      extdemo1 これは ./configure と呼ばれる最初のパラメータです。 Enable-ext_demo_1 のオプション
    • 2 番目のパラメータは、./configure コマンドが拡張設定ファイルを処理するときにパラメータの内容を表示します
    • 3 番目のパラメータは、./configure コマンドを使用する際のヘルプです。 /configure --help を実行すると、表示されます

    • 2 番目のマクロは PHP_NEW_EXTENSION で、拡張モジュールと、拡張機能の一部としてコンパイルする必要があるソース コード ファイルを宣言します。

      複数のソース ファイルが必要な場合は、スペースを使用してそれらを区切ります。$ext_shared は、
    • PHP_SUBST(EXT_DEMO_1_SHARED_LIBADD) の呼び出しに関連しています。
    PHP_ARG_ENABLE(ext_demo_1, whether to enable ext_demo_1 support,[  --enable-ext_demo_1           Enable ext_demo_1 support])if test "$PHP_EXT_DEMO_1" != "no"; then  PHP_SUBST(EXT_DEMO_1_SHARED_LIBADD)  PHP_NEW_EXTENSION(ext_demo_1, ext_demo_1.c, $ext_shared)fi
    ログイン後にコピー

    拡張機能をコンパイルする

    config.m4 ファイルを変更した後、PHP と拡張機能をコンパイルします。

    PHP_NEW_EXTENSION(ext_demo_1, ext_demo_1.c, $ext_shared)
    ログイン後にコピー

    この時点で、PHP は /usr/local/php ディレクトリにインストールされています。ディレクトリに入ると、次のファイルが表示されます:

    /vagrant$ ./configure --disable-libxml --enable-ext_demo_1 --disable-dom --disable-simplexml --disable-xml --disable-xmlreader --disable-xmlwriter --without-pear --prefix=/usr/local/php/vagrant$ make/vagrant$ sudo make installInstalling PHP SAPI module:       cgiInstalling PHP CGI binary: /usr/local/php/bin/Installing PHP CLI binary:        /usr/local/php/bin/Installing PHP CLI man page:      /usr/local/php/man/man1/Installing build environment:     /usr/local/php/lib/php/build/Installing header files:          /usr/local/php/include/php/Installing helper programs:       /usr/local/php/bin/  program: phpize  program: php-configInstalling man pages:             /usr/local/php/man/man1/  page: phpize.1  page: php-config.1/vagrant/build/shtool install -c ext/phar/phar.phar /usr/local/php/binln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/pharInstalling PDO headers:          /usr/local/php/include/php/ext/pdo/
    ログイン後にコピー

    /usr/local/php/bin ディレクトリに入り、次のコマンドを実行します。 :

    /usr/local/php$ lsbin  include  lib  man
    ログイン後にコピー

    上記の手順に従ってインストールされた拡張機能には、その拡張機能が正常に動作するかどうかをテストする関数が含まれていることがわかります。この関数の名前は、confirm_ext_demo_1_compiled(arg) です。実行結果は次のとおりです:

    /usr/local/php/bin$ ./php --info|grep demoConfigure Command =>  './configure'  '--disable-libxml' '--enable-ext_demo_1' '--disable-dom' '--disable-simplexml' '--disable-xml' '--disable-xmlreader' '--disable-xmlwriter' '--without-pear' '--prefix=/usr/local/php'ext_demo_1ext_demo_1 support => enabled
    ログイン後にコピー

    ext_demo_1 拡張機能が正常にインストールされたことがわかります。拡張機能の開発の詳細については、AICODE.CC.

    を参照してください。
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホット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衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? セッションのハイジャックはどのように機能し、どのようにPHPでそれを軽減できますか? Apr 06, 2025 am 12:02 AM

    セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

    PHPのさまざまなエラータイプを説明します(通知、警告、致命的なエラー、解析エラー)。 PHPのさまざまなエラータイプを説明します(通知、警告、致命的なエラー、解析エラー)。 Apr 08, 2025 am 12:03 AM

    PHPには4つの主要なエラータイプがあります。1。notice:わずかなものは、未定義の変数へのアクセスなど、プログラムを中断しません。 2。警告:通知よりも深刻で、ファイルを含むなど、プログラムを終了しません。 3。ファタラー:最も深刻なのは、機能を呼び出すなど、プログラムを終了します。 4。ParseError:構文エラーは、エンドタグの追加を忘れるなど、プログラムの実行を防ぎます。

    PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

    PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

    PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

    PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

    HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? Apr 09, 2025 am 12:09 AM

    HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

    PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

    PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

    PHP 7.4で導入された矢印関数(短い閉鎖)を説明します。 PHP 7.4で導入された矢印関数(短い閉鎖)を説明します。 Apr 06, 2025 am 12:01 AM

    矢印関数はPhp7.4で導入され、短い閉鎖の単純化された形式です。 1)=>演算子を使用して定義され、機能を省略し、キーワードを使用します。 2)矢印関数は、キーワードを使用せずに現在のスコープ変数を自動的にキャプチャします。 3)コールバック関数と短い計算でしばしば使用され、コードのシンプルさと読みやすさを改善します。

    アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

    PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

    See all articles