スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【PHP/C】PHP extension で Hello World!

今回はPHP extensionの作成第1弾としてプログラミングのはじめの1歩
Hello, World の出力に挑戦してみたいと思います

OS: FedoraCore10
PHP version:PHP-5.2.9

で行いました
PHPのソースは各自用意しておいてください

まず始めにツールのインストールから…

【1】phpizeの導入
yum -y install php-devel

【2】スケルトンの作成
php extensionを作る際に最低限必要なもの(以下スケルトンとする)を用意してくれるext_skelというツールがPHPのソースに同梱されています

/php-source-path/ext/ext_skel

以下のように実行します

ext_skel --extname=hello_world --proto=hello_world

実行すると

/php-source-path/ext/hello_world

というディレクトリが作成され、スケルトンの作成が完了です

extname:作ろうとするextensionの名前
proto:関数名などのプロトタイプを作成する際の名前

【3】m4ファイルの編集
config.m4ファイルの

dnl PHP_ARG_ENABLE(get_request, whether to enable get_request support,
dnl Make sure that the comment is aligned:
dnl [  --enable-get_request           Enable get_request support])

の部分を

PHP_ARG_ENABLE(get_request, whether to enable get_request support,
dnl Make sure that the comment is aligned:
 [  --enable-get_request           Enable get_request support])

としてください

dnlはコメントアウトになります

【4】関数の開発
/php-source-path/ext/hello_world

というディレクトリの中をみると
何やらいろいろなファイルが作成されていますが、
ポイントになるファイルは2つ

hello_world.c
php_hello_world.h

になります

(4-1) php_hello_world.hの編集
PHP_FUNCTION(hello_world);
と追記
PHP_FUNCTION(confirm_hello_world_compiled);
とすでに書かれているのでその下にでも追記すればいいです

(4-2) hello_world.cの編集
hello_world_functions[] = {}
内に
PHP_FE(hellot_world, NULL)
を追加

関数の実体を作成
PHP_FUNCTION(hello_world){
    printf("Hello, World\n");
    return;
 }

(4-1)と同じくconfirm_hello_world_compiledという名前で既に書かれているのでマネして書いてみました。

【5】soの作成
/php-source-path/ext/hello_world
にて以下の3つのコマンドをたたく

phpize
./configure
make

すると
/php-source-path/ext/hello_world/modules以下に

hello_world.so

ができている

【6】作成したextensionを使ってみる
作成したsoファイルをphpが読み込むextensionディレクトリにコピー

cp hello_world.so /usr/lib/php/modules

使い方は以下の2通り試してみました

(6-1)dlで呼び出す
test.php
<?php
dl('hello_world.so');
hello_world();
?>

(6-2)iniファイルでロードさせる
/etc/php.d/hello_world.ini

extension=hello_world.so
と書いておく
test.php
<?php
hello_world();
?>

php test.php
Hello, World

となりHello, Worldと出力するPHP extensionの完成
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:PHP  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。