ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能の生成とコンパイル

PHP 拡張機能の生成とコンパイル

高洛峰
高洛峰オリジナル
2016-11-17 14:20:111470ブラウズ

まず第一に、PHP 拡張機能には 2 つのコンパイル方法があることを説明します:
方法 1: PHP のコンパイル時に拡張機能を直接コンパイルする
方法 2: 拡張機能は .so ファイルにコンパイルされ、読み込みパスはphp.ini;

次の手順で PHP 拡張機能を作成してコンパイルします。
PHP ソース コードをダウンロードして解凍し、ソース コードのルート ディレクトリで操作を開始します。
1.次のように拡張フレームワークを生成します:

➜ php-5.6.24 cd ~/Downloads /tmp/php-5.6.24➜ php-5.6.24 cd ext
➜ ext ./ext_skel --extname=myfirstext

ext_skel が実行されると、開発者は次の手順を実行するよう求められます。この手順は、拡張機能の 2 つのコンパイル方法のうちの 1 つ目の手順です。

To use your new extension, you will have to execute the following steps:

 $ cd ..
 $ vi ext/plogger/config.m4
 $ ./buildconf
 $ ./configure --[with|enable]-plogger
 $ make
 $ ./sapi/cli/php -f ext/plogger/plogger.php
 $ vi ext/plogger/plogger.c
 $ make

2. ファイル ext/myfirstext/config を変更します。 m4
./configure オプションの設定時にこの拡張機能のコマンドを有効にするために使用される line10 ~ 18 のコードに注目し、line16 と line18 の dnl を削除し、dnl をコメント文字として理解します。

dnl Otherwise use enable:
16 dnl PHP_ARG_ENABLE(myfirstext, whether to enable myfirstext support,
dnl Make sure that the comment is aligned:
dnl [ --enable-myfirstext Enable myfirstext support])
20 if test "$PHP_MYFIRSTEXT" != "no"; then
dnl Write more examples of tests here...

上記の 2 つの手順は共通です。次に、PHP 拡張機能をコンパイルする 2 つの方法を紹介します。
方法 1: PHP をコンパイルするときに拡張機能を直接コンパイルします
3。次のように、ソース コードのルート ディレクトリで ./buildconf を実行します。 ./configure –enable-myfirstext をソース コードのルート ディレクトリで実行します。コンパイル時間を短縮するために、次のように、configure フェーズ中に特定のモジュールをコンパイルしないように指定できます。 -enable-debug --enable-myfirstext --disable-cgi --enable-cli --without-pear --disable-xml --without-mysql

5. ソースコードのルートディレクトリでmakeを実行します

注意してください。コンパイルが成功した後は、make install を実行しないでください。この時点で、拡張機能 myfirstext は正常にコンパイルされ、対応する php バイナリ ファイルが ./sapi/cli/php に生成されているためです。方法 2: 拡張機能がコンパイルされます。 .so ファイルにコピーし、php.ini で設定します。 読み込みパス
3. 拡張子ディレクトリ ext/myfirstext/

で phpize コマンドを実行します。 4. 拡張子ディレクトリ ext/myfirstext/

で ./configure –enable-myfirstext コマンドを実行します。 5. 拡張ディレクトリ ext/myfirstext/ で make
を実行します。 make を実行すると、対応する .so ファイルが ext/myfirstext/modules に生成されます。このファイルを php.ini に設定してロードするだけです。

拡張機能が正常にロードされているかどうかを確認します
./sapi/cli/php -f ext/myfirstext/myfirstext.php を実行します
または、php -m を介してすべての拡張機能をリストし、myfirstext があるかどうかを確認し、次のコマンドを実行します: ./sapi /cli /php -m | grep myfirstext
上記の検証に合格すると、拡張機能が正常にコンパイルされたことを示します。ただし、これまでのところ、C 関連のコードは編集していません。デフォルトでは、すべてが ext_skel によって生成されます。この拡張機能 myfirstext にどのような関数が含まれているかを確認してください。以下のように:

➜ php-5.6.24 ./sapi/cli/php -r 'print_r(get_extension_funcs("myfirstext"));'



OK、ここまでは生成、設定、コンパイルについては理解できましたね。 PHP 拡張フレームワークの。次に、独自の関数を拡張機能 myfirstext に追加する必要があります。


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