実例で学ぶPHP拡張モジュールの作り方第2回
http://gihyo.jp/dev/serial/01/php-module/0002
が丁度アップされたので、試してみた。
- 拡張関数を定義するxmlファイルを記述
<?xml version="1.0" encoding="UTF-8"?> <extension name="hw" version="0.1.0"> <function name="hw" role="public"> <proto>void hw()</proto> <summary>Print Hogehoge</summary> <code><?data php_printf("Hogehoge%s", PHP_EOL); ?></code> <test> <code><?data hw(); ?></code> <result mode="plain"><?data Hogehoge! ?></result> </test> </function> </extension>
でFail・・・・。テストのところのXMLが間違えてた・・・。
XMLで間違えてるともう一回pecl-genからやり直しか。
・・・で、直してみたけどtestが上手く通らない。
$ make test
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).PHP Warning: PHP Startup: Unable to load dynamic library 'modules/pdo.so' - modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'modules/pdo.so' - modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0=====================================================================
CWD : /home/****/phpext/hw
PHP : /usr/bin/php
PHP_SAPI : cli
PHP_VERSION : 5.2.0-8+etch9
ZEND_VERSION: 2.2.0
PHP_OS : Linux - Linux colinux 2.6.12-co-0.7.1 #1 Sat Jul 14 12:13:49 UTC 2007 i686
INI actual : /etc/php5/cli/php.ini
More .INIs : /etc/php5/cli/conf.d/pdo.ini
Extra dirs :
=====================================================================
Running selected tests.
FAIL hw() function [tests/hw.phpt]
=====================================================================
Number of tests : 1 1
Tests skipped : 0 ( 0.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 1 (100.0%) (100.0%)
Tests passed : 0 ( 0.0%) ( 0.0%)
- -
Time taken : 1 seconds
==========================================================================================================================================
FAILED TEST SUMMARY
- -
hw() function [tests/hw.phpt]
=====================================================================
まぁいいか。testで通らなくても、テストケースの書き方が悪いだけで・・・。とりあえず、インストール
# make install
Installing shared extensions: /usr/lib/php5/20060613+lfs/
$ php -d extension=hw.so -r 'hw();'
Hogehoge
出来た。:)
なんか、自分だけここで日記書けなかった
・・・ポイント使わないとGroupで日記書けないのかなーとか思いつつ、はてなに問合せ。したら、
先日の障害の影響で、データベースに異常が発生しており
昨日修正を行いました。
お手数ですがご確認いただけますでしょうか。
書けたよ!>< *1
あと、前に書いてたのも何か復旧してるよ!すごいよ、はてな。
http://phpext.g.hatena.ne.jp/tohokuaiki/20080116
とりあえず、coLinux環境を作ってみた。
http://d.hatena.ne.jp/tohokuaiki/20080115
http://d.hatena.ne.jp/tohokuaiki/20080116
3年前のノートでは、メモリが足りなかったので、1Gのを買って付け足した。ThinkPad内蔵のメモリを交換しないとダメだったんでキーボード外すのも初挑戦。*2
ということで、
第1回 PHP拡張モジュールを作る前に:実例で学ぶPHP拡張モジュールの作り方|gihyo.jp … 技術評論社読んで、pecl_genをインストールして、拡張作成の環境作成 VmwareでUbuntu Linux (Windows) - おぎろぐExtended - PHP拡張勉強会読んで、hogeExtensionをphpinfo()で確認。おぉ、出来てる・・・。