1. まず、PHPをインストールする必要があります
2. PHPのダウンロードおよび解凍ディレクトリの下にあるextディレクトリに移動します
#cd /root/php-5.3.6/ext
#./ext_skel --extname=hmc
説明:
./ext_skel --extname=モジュール名
module_name は、私が選択した hmc など、選択できる拡張モジュールの名前です。ツールを実行すると、選択した module_name のディレクトリが ext ディレクトリに自動的に作成されます。これらのコードについては、config.m4 ファイル内の 3 行のコメントを調整するだけで済みます。このカスタマイズを使用して正常にコンパイルするには、PHP 用の拡張モジュールを使用します。
3.config.m4を変更します
生成されたモジュールディレクトリを任意の場所にコピーできます
hmcディレクトリに入ります
vi config.m4
テキストエディタを使用して config.m4 ファイルを開きます
あなた自身の選択に従って
を配置してください
dnl PHP_ARG_WITH(hmc、hmc サポート用、
dnl コメントが整列していることを確認してください:
dnl [ --with-hmc hmc サポートを含める])
に変更します
PHP_ARG_WITH(hmc サポート用の hmc、
コメントが揃っていることを確認してください:
[ --with-hmc hmc サポートを含める])
それとも
しますか
dnl PHP_ARG_ENABLE(hmc, hmc サポートを有効にするかどうか,
dnl コメントが整列していることを確認してください:
dnl [ --enable-hmc hmc サポートを有効にする])
に変更します
PHP_ARG_ENABLE(hmc, hmc サポートを有効にするかどうか,
コメントが揃っていることを確認してください:
[ --enable-hmc hmc サポートを有効にする])
通常は後者を選択し、保存して終了します。
4. .c および .h ファイルのコードを変更する
Vi hmc.c
ファイル内の次のコードを変更します
/* ユーザーに表示されるすべての関数には、hmc_functions[] にエントリが必要です。
*/
const zend_function_entry hmc_functions[] = {
PHP_FE(say_hello, NULL) /* コード行を追加 */
PHP_FE(confirm_hmc_compiled, NULL) /* テストのため、後で削除します。 */
{NULL, NULL, NULL} /* hmc_functions[] の最後の行である必要があります */
};
ファイルの最後に次のコードを追加します
PHP_FUNCTION(say_hello)
{
zend_printf("hello worldn");
}
ファイルを保存して終了します
vi php_hmc.h
ファイル内の PHP_FUNCTION(confirm_hmc_compiled) 行の前に次のコードを追加します。
PHP_FUNCTION(say_hello);
ファイルを保存して終了します
#phpize
#./configure --enable-hmc
#メイクインストール
php の modules ディレクトリに hmc.so ファイルがあるはずです。場所はマシンによって異なります。
6. PHP 設定を変更する
php.iniを編集して拡張子を追加します:
[PHP] モジュールの下に追加します:
拡張子 = hmc.so
HTTPDを再起動します
#サービスhttpdの再起動
7.php呼び出し
対応する www ディレクトリに c.php ファイルを作成します
Say_hello();
?>
この時点で、ブラウザは次のように出力するはずです:
ハローワールド
8.デバッグ
コマンドラインで入力可能
#php –q c.php
現在のwwwディレクトリを入力する必要があります
モジュールがインストールされているかどうかを確認するには、phpinfo()を使用できます
php -m コマンドも使用できます
まず使ってください
#thatphp
phpが配置されているディレクトリを見つけます。ディレクトリはマシンごとに異なります
#/usr/bin/php -m
9. パラメータ付き関数
Vi hmc.c
最後のsay_hello関数の内容を次のように変更します:
PHP_FUNCTION(say_hello)
{
zval **あなたの名前;
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &yourname) == FAILURE)
{
WRONG_PARAM_COUNT;
}
zend_printf("hello world, %sn", Z_STRVAL_PP(あなたの名前));
}
に変更します
Say_hello("清清月尭");
?>