ホームページ  >  記事  >  バックエンド開発  >  PHP 拡張機能 (SO コンポーネント) を迅速に開発するためのチュートリアル

PHP 拡張機能 (SO コンポーネント) を迅速に開発するためのチュートリアル

WBOY
WBOYオリジナル
2016-06-13 13:14:15832ブラウズ

PHP 拡張機能 (SO コンポーネント) を迅速に開発するチュートリアル
この記事では、PHP 5.2 環境の拡張機能 (PHP Extension) の作成方法を非常に簡単に説明します。すぐに学習したい友人に、その作成プロセスを画像とテキストの形式で理解していただけると幸いです。

要件: たとえば、lanhaicode という拡張機能を開発します。拡張機能には lanhai_test() という関数があり、文字列を入力すると、関数は次のように返します。
要件: C/C++ プログラミングを理解し、PHP プログラミングに精通している
環境: 対応するバージョンの php のソース コードのコピーをダウンロードします。ここでは php-5.2.17 を使用します。まず、php を通常どおりインストールします。 php は /usr /local/php ディレクトリにインストールされ、ソースコードは /root/soft/php/php-5.2.17/ にあります。今すぐ始めてください。
php-5.2.17 ダウンロード アドレス:
http://blog.lrenwang.com/down/soft/php-5.2.17.tar.bz2
解凍: tar -vxjf php-5.. ....tar.bz2


ステップ 1: 拡張フレームワークの生成

cd /root/soft/php/php-5.2.17/ext
./ext_skel --extname=lanhaicode
cd /root/soft/php/php-5.2.17/ext/lanhaicode
vi config.m4

ファイルを開いた後、DNL を削除して次の情報を取得します:
PHP_ARG_ENABLE(lanhaicode, whether to enable lanhaicode support,
[ --enable-lanhaicode Enable lanhaicode support])

保存して終了します。
ステップ 2: コードを作成します
vi php_lanhaicode.h

検索: PHP_FUNCTION(confirm_lanhaicode_compiled); 新しい行を追加します:
PHP_FUNCTION(lanhai_test); 

保存して終了します。

vi lanhaicode.c

関数を配列に追加し、zend_function_entry lanhaicode_functions[] を見つけて、
PHP_FE(lanhaicode, NULL)


を追加し、次のコードを末尾に追加します。 lanhaicode.c ファイル:
PHP_FUNCTION(lanhai_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, "Your input string: %s\n", arg);
RETURN_STRINGL(strg, len, 0);
}

保存して終了します。

ステップ 3:

cd /root/soft/php/php-5.2.17/ext/lanhaicode
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make test
make install


をコンパイルしてインストールします。/構成プロセス中に次のエラーが発生しました:
gcc を確認しています...いいえ
cc をチェックしています... いいえ
cc をチェックしています... いいえ
cl をチェックしています... いいえ
configure: エラー: $PATH に許容可能な C コンパイラが見つかりません
「config」を参照してください。

解決策: GCC ソフトウェア スイートをインストールし、次のコマンドを実行します:
yum install -y gcc


次に、/usr/local があるかどうかを確認します。 / php/lib/php/extensions/no-debug-non-zts-20060613/lanhaicode.so
php.ini を編集して拡張機能を追加します:
vi /usr/local/php/lib/php.ini

[PHP] モジュールの下に追加します:
extension = lanhaicode.so
保存して終了します。

注: 拡張ファイル ディレクトリがない場合、またはインストール エラーが発生した場合は、このディレクトリを自分で作成し、そのディレクトリに拡張機能をコピーして、php.ini の extension_dir を忘れずに変更してください。ファイルをこのディレクトリに追加します:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"

ステップ 4: インストール結果を確認します
モジュールを見てください。ロードされていますか:
/usr/local/php/bin/php -m、出力されるはずです:
[PHP Modules]
...
lanhaicode
...
[Zend Modules]


次に、Apache を再起動し、phpinfo() を出力すると、次のことが確認できるはずです:
lanhaicode
lanhaicode サポートが有効になりました

関数が存在するかどうかを確認し、呼び出して Web ディレクトリに作成します: lanhaicode.php
<?php
echo "<pre class="brush:php;toolbar:false">";
print_r(get_loaded_extensions());
print_r(get_extension_funcs('lanhaicode'));
echo lanhai_test('My first php extension');
echo "
"; ?>

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