要件: たとえば、heiyeluren という拡張機能を開発します。拡張機能には heiyeluren_test() という関数があり、文字列を入力すると、関数は次のように返します。
要件: C/C プログラミングを理解し、PHP プログラミングに精通している
環境: 対応するバージョンの php のソース コードのコピーをダウンロードします。ここでは php-5.2.6 を使用します。最初に php を通常どおりインストールします。 php は /usr /local/php ディレクトリにインストールされ、ソースコードは /root/soft/php/php-5.2.6/ にあります。今すぐ始めてください。
ステップ 1: 拡張フレームワークの生成
cd /root/soft/php/php-5.2.6/ext
./ext_skel --extname=heiyeluren
cd /root/soft/php/php-5.2. 6/ext/heiyeluren
vi config.m4
ファイルを開いた後、DNL を削除し、次の情報を取得します:
PHP_ARG_ENABLE(heiyeluren、heiyeluren サポートを有効にするかどうか、[ - -enable-heiyeluren heiyeluren サポートを有効にする])
保存して終了します。
(図 01)
ステップ 2: コードを作成します
vi php_heiyeluren.h検索: PHP_FUNCTION(confirm_heiyeluren_compiled);、1 行追加します:
PHP_FUNCTION(heiyeluren_test); 保存して終了します。
(写真02)
vi heiyeluren.c関数を配列に追加し、zend_function_entry heiyeluren_functions[] を見つけて、次を追加します:
PHP_FE(heiyeluren, NULL)(写真03)
heiyeluren.c ファイルの最後に移動し、次のコードを追加します。
PHP_FUNCTION(heiyeluren_test){
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, "入力文字列: %sn", arg); RETURN_STRINGL(strg, len, 0);
}
保存して出口 。 (写真04)
ステップ 3: コンパイルとインストール
cd /root/soft/php/php-5.2.6/ext/heiyeluren /usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make test
make install
php.ini を編集して拡張機能を追加します。
vi /usr/local/php/lib/php.ini[PHP] モジュールの下に追加します:
extension = heiyeluren.so保存して終了します。
(写真05)
注: 拡張ファイルのディレクトリがない場合、またはインストール エラーが発生した場合は、このディレクトリを自分で作成し、そのディレクトリに拡張機能をコピーして、php.ini ファイルの extension_dir を次のディレクトリに変更することを忘れないでください。ディレクトリ:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"(図 06)
ステップ 4: インストール結果を確認します
モジュールがロードされているかどうかを確認します: /usr/local/php/bin/php -m, it
[PHP Modules]...
heiyeluren
...
[Zend Modules]
が出力されます。
次に、Apache を再起動し、phpinfo() を出力すると、次のことが確認できるはずです。
heiyelurenheiyeluren サポートが有効になりました
(図 07)
関数が存在するかどうかを確認して呼び出し、Web ディレクトリに作成します: heiyeluren.php
echo "
";<br>print_r(get_loaded_extensions( )) ;<br>print_r(get_extension_funcs('heiyeluren'));<br>echo heiyeluren_test('初めての php 拡張機能');<br>echo "";
拡張子の作成に成功しました!