phpize を使用して php 拡張機能を作成します config.m4.
が見つかりません 元のアドレス: http://lxsym.blog.51cto.com/1364623/293862/
それでは、php 拡張機能の作成方法について話しましょう
まず第一に、適切な php 環境が必要です
私は php を /usr/local/php にインストールし、もちろん php 設定も渡しました
ただし、php.ini のパスに注意してください
この方法でインストールされた php 拡張機能は実装できません
このファイルは、php のインストール後に /usr/local/php/bin ディレクトリにあります
後で phpize します
これはシェル スクリプトです。vi phpize を使用してその内容を表示できます
ただし、このスクリプトはどこでも使用できるわけではないことに注意してください
[[email protected] root]# phpize
config.m4 が見つかりません。
モジュールの最上位ソース ディレクトリで /usr/local/bin/phpize を実行していることを確認してください
[[email protected] root]# phpize
config.m4 が見つかりません。
モジュールの最上位ソース ディレクトリで /usr/local/bin/phpize を実行していることを確認してください
このスクリプトを表示すると、実際にこれら 2 つの結果が表示されます
処理方法を見つけるのは簡単です
モジュールが展開されたら、それを /usr/local/src/php-4.3.5/ext に配置して実行するのが最善です
/usr/local/php/bin/phpize のようにここで実行することもできますし、phpize で実行することもできます
このツールは /usr/local/src/php-4.3.5/ext にあります
フレームワークを構築するにはPHP 拡張機能の場合
[[email protected] ext]#cd /usr/local/src/php-4.3.5/ext/
[[email protected] ext]# ./ ext_skel --extname=sdomain
ディレクトリ sdomain の作成
基本ファイルの作成: config.m4 .cvsignore sdomain.c php_sdomain.h CREDITS EXPERIMENTAL testing/001.phpt sdomain.php [done].
新しい拡張機能を使用するには、以下を行う必要があります。次の手順を実行します。
1. $ cd ..
2. $ vi ext/sdomain/config.m4
3. $ ./buildconf
4. $ ./configure --[with |enable]-sdomain
5. $ make
6. $ ./php -f ext/sdomain/sdomain.php
7. $ vi ext/sdomain/sdomain c
8. $ make
このステップを実行すると、次のような結果が表示されます
ext/sdomain/config.m4 に満足するまでステップ 3 ~ 6 を繰り返し、
ステップ 6 でモジュールが PHP にコンパイルされたことを確認します次に、
コードの作成を開始し、最後の 2 つの手順を必要に応じて繰り返します。
このようにして、今後、このディレクトリに sdomain
というディレクトリが生成されます。
[[email protected] ext]# cd sdomain/
[[email protected] sdomain]# ls
config.m4 実験的 sdomain.php テスト
クレジット sdomain.c php_sdomain.h
次に、ファイルのシーケンスを
configure.m4
sdomain.c
php_sdomain.h
に変更する必要があります。テキスト エディタを使用して config.m4 ファイルを開きます。ファイルの内容は大まかに次のとおりです。
dnl $ Id$d
dnl config.m4 for extension my_module
dnl PHP_EXTENSION(my_module)
dnl を呼び出すことを忘れないでください このファイル内のコメントは、文字列 dnl.
で始まります。 dnl 必要な場合は削除してください。このファイルは編集せずに機能しません
dnl を編集しないと、
dnl 拡張機能が外部のものを参照している場合は、次のように使用します。
dnl PHP_ARG_WITH(my_module, for my_module support,
dnlコメントは整列しています:
dnl [--with-my_module Include my_module support])
dnl それ以外の場合は、enable:
dnl PHP_ARG_ENABLE(my_module, my_module support を有効にするかどうか,
dnlコメントは整列しています:
dnl [ --enable-my_module my_module support を有効にする])
if test $PHP_MY_MODULE != no; then
dnl
の存在など、外部のものをテストしない場合dnl ヘッダー、ライブラリ、またはその中の関数については、
dnl 次の行のコメントを解除するだけで準備完了です。
dnl ここにテストの例をもっと書いてください...
PHP_EXTENSION(my_module, $ext_shared)
Fi
自分の意見に従って
dnl の選択を変更します PHP_ARG_WITH(my_module, for my_module support,
dnl コメントが整列していることを確認してください:
dnl [--with-my_module Include my_module support ])
から
PHP_ARG_WITH(my_module, for my_module support,
[ --with-my_module Include my_module support])
または will
dnl PHP_ARG_ENABLE(my_module, my_module サポートを有効にするかどうか、
dnl コメントが整列していることを確認してください:
dnl [ --enable-my_module Enable my_module support])
が
に変更されました PHP_ARG_ENABLE(my_module, my_module support を有効にするかどうか,
[--Nable-my_module Enable my_module support])
(実際には、この部分の DNL を削除します。このファイルでは、説明も削除されます)
ここでは後者を使用しました
次に、保存して終了します
次に、
Vi my_module.c
ファイル内の次のコードを変更します。
/* ユーザーに表示されるすべての関数には、my_module_functions[] にエントリが必要です。
*/
function_entry my_module_functions[ ] = {
PHP_FE(say_hello, NULL) /* ?コード行を追加します*/
PHP_FE(confirm_my_module_compiled , NULL) /* テストのため、後で削除します */
{NULL, NULL, NULL。 } /* my_module_functions[] の最後の行である必要があります */
};
ファイルの最後に次のコードを追加します Code
PHP_FUNCTION(say_hello)
{
zend_printf("hello sdomain!");
}
再度変更: php_sdomain.h
vi php_sdomain.h
in PHP_FUNCTION(confirm_my_module_compiled ); /* テスト用に、後で削除します。 */ この行の下に行を追加します:
PHP_FUNCTION(say_hello); /* テストのため、後で削除します */
ファイルを保存して終了します
次に、このディレクトリ
で上記のコマンドを使用できます。 php/bin/phpize
実行後、次のような内容が表示されます。
[[email protected] sdomain]# /usr/local/php /bin/phpize
次の設定:
PHP API バージョン: 20020918
Zend Module Api No: 20020429
Zend Extension Api No: 20050606
[[email protected] sdomain]#
次に、 ./configure --with-php-config=/usr/local を実行します。 /php/bin/php-config
次に、make
make install
を実行します。その後、PHP インストール ディレクトリの下の A フォルダーに対応する so ファイルが生成され、そのファイルがどこにあるかを確認するプロンプトが表示され、コピーされます。内部の SO ファイルを、SO ファイルを保存する場所に移動します
つまり、php.ini の extension_dir で指定した場所
最後のステップは、php.ini ファイルでこの拡張機能を開くことです
extension= sdomain.so
次に
apache を再起動します
phpinfo を使用して確認すると問題ありません
この記事は CSDN ブログからのものです。転載する場合は出典を明記してください: http://blog.csdn。 net/sdomain/archive/2009/09/04/4520425.aspx