LINUX環境でPHP拡張機能を開発する手順は次のとおりです:
1. PHPソースコードをダウンロードし、解凍したディレクトリは/root/lamp/php-5.5.37です。
2. /root に移動し、/lamp/php-5.5.37/ext ディレクトリに test_extension.def ファイルを作成しますint a(int x, int y)string b(string str, int n)3. 拡張機能
frameworkgeneratorを介してフレームワーク ディレクトリを生成します。
ext_skel –extname=test_extension –proto=test_extension.def
成功した生成結果は次のとおりです:
Creating directory test_extension awk: /root/lamp/php-5.5.37/ext/skeleton/create_stubs:56: warning: escape sequence `\|' treated as plain `|' Creating basic files: config.m4 config.w32 .svnignore test_extension.c php_test_extension.h CREDITS EXPERIMENTAL tests/001.phpt test_extension. php [done].To use your new extension, you will have to execute the following steps: 1. $ cd .. 2. $ vi ext/test_extension/config.m4 3. $ ./buildconf 4. $ ./configure --[with|enable]-test_extension 5. $ make 6. $ ./sapi/cli/php -f ext/test_extension/test_extension.php 7. $ vi ext/test_extension/test_extension.c 8. $ make Repeat steps 3-6 until you are satisfied with ext/test_extension/config.m4 and step 6 confirms that your module is compiled into PHP. Then, start writing code and repeat the last two steps as often as necessary.
config ファイル
config.m4 を変更し、行 10、11、および 12 の前の dnl を削除します。 PHP_ARG_WITH(test_extension, for test_extension support,
Make sure that the comment is aligned:
[ --with-test_extension Include test_extension support])
6. aとbの実装
関数、vi test_extension.c、修正された関数aとbは次のとおりですPHP_FUNCTION(a)
{
int argc = ZEND_NUM_ARGS();
long x;
long y;
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
{
php_error(E_WARNING, "zend_parse_parameters failure!");
return;
}
RETURN_LONG(x + y);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
{
php_error(E_WARNING, "zend_parse_parameters failure!");
return;
}
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result; while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '/0';
RETURN_STRINGL(result, result_length, 0);
}
7. test_extensionディレクトリで実行します: /usr/local/bin/phpize
Configuring for: PHP Api Version: 20121113Zend Module Api No: 20121212Zend Extension Api No: 220121212
8. 設定: ./configure – with-php-config=/usr/local/bin/php-config
9. コンパイル: make10. インストール: make install
インストールが完了したら、/usr/local/lib /php/extensions/no-debug-zts- Test_extension.so は 20121212/
11 の下に生成されます。php.in を変更して、extension=test_extension.so
以上がLINUX環境向けのPHP拡張機能開発コード例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。