[PHP-users 7987] Re: もう一度組み立て直してみまたが

Yasuo Ohgaki php-users@php.gr.jp
Sat, 08 Jun 2002 20:56:48 +0900


大垣です。

簡単に整理しておきます。

dolphine@axel.ocn.ne.jp wrote:
>  再び上杉です。
>   加藤さん、大場さんレス付けて頂いて感謝しております。
> 加藤さんのご指摘の [PHP-users 4273] を読みもう一度 php-4.1.2.tar.gz
> にあう拡張モジュールをピックアップして ---(2)からやり直してみました。
> 
> 
> %tar zxvf php-4.1.2.tar.gz
> %cd php-4.1.2/ext
> %tar zxvf ../../php4_namazu-2.1.0.tar.gz

php4_namazu-2.1.0.tar.gzとPECL版はたしか岩切さんの
パッチが当ててある事を除きPECL版と同じです。

> %tar zxvf ../../php4_jstring-1.1.1.tar.gz

4.1.0以降は必要ありません。
--enable-mbstringが必要です。ドキュメントされていませんが
i18n_*()関数のエイリアスが作ってあるのでphp3 i18n版から
の移行もしやくなっています。

次にリリースされる4.3.0からはデフォルトでビルドされます。

> %tar zxvf ../../php4_mbregex-1.3.1.tar.gz

4.2.0からmbregexはマージされています。(--enable-mbregex)

> %tar zxvf ../../php4_kakasi-0.3.0.tar.gz

PECLに収録されいるのはこのバージョンです。

> %tar zxvf ../../php4_chasen-0.3.0.tar.gz

PECLに収録されいるのはこのバージョンです。

> %cd ../
> %rm configure
> %./buildconf
> % ./configure --enable-jstring --with-namazu --with-kakasi \
> 
>>--enable-mbregex --enable-iconv --with-pgsql \
>>--with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid --enable-track-vars
> 
> % make
> 
>  に変更しましたが、
> ------------------------------------------------------------------------
>  jstring.c:54:37: ext/standard/php_output.h: No such file or directory
> make[3]: *** [jstring.lo] エラー 1
> make[3]: 出ます ディレクトリ `/usr/local/src/php-4.1.2/ext/jstring'
> make[2]: *** [all-recursive] エラー 1
> make[2]: 出ます ディレクトリ `/usr/local/src/php-4.1.2/ext/jstring'
> make[1]: *** [all-recursive] エラー 1
> make[1]: 出ます ディレクトリ `/usr/local/src/php-4.1.2/ext'
> make: *** [all-recursive] エラー 1
> [postgres@localhost php-4.1.2]$
> ------------------------------------------------------------------
> 今度は jstring のエラー版がでます。jstring はもとのphp-4.1.2.tar.g
> には入っていません。何かどうどうめぐりしているみたいなのですが、
> 困ってしまいました。

./configure --helpとしてどの様な機能があるか確認してから
モジュールを追加される事をお奨めします。

PECLに収録されているモジュールは今のところ新しいビルドシステ
ム用に変更していないのでPHP4.2.x以下で利用可能です。

# と言う事でPHP 4.3.0-devでは使えません。
# 修正は簡単です。4.3.0用パッチはまだ作ってません。
# パッチ歓迎します。

# PECLはcvs.php.netのpear repositoryの
# /pear/PECLに収録されています。4.3.0から
# pear downloaderでダウンロードできるように
# なるはずなのですが、、、

ext/iconvのソースですが、4.2.0以前のソースは塚田さんの
iconvモジュールと同等ではありません。4.2.0から私のパッチ
が適用されているので、libiconv, libgconv等を利用してい
ない場合(つまりlibcがiconvをサポートしている場合)は塚田
さんのiconvモジュールと同等の動作をします。

4.2.0より古いiconvモジュールにはwide charを正しく取り扱
えない、バッファーを元の"サイズ*sizeof(ucs4_t)"として確
保する為マルチバイト文字が正しく変換できない場合がある、と言っ
た不具合があります。

libiconv, libgconvを使っている場合、先ほど説明したバグ有
りの動作をします。少なくともLinuxのglibcはiconvをサポート
しています。4.2.0x+Linuxユーザーの方はiconvの動作を心配
される必要はありません。

# 自分でパッチしておきながら、今ソースを見て思い出しました。
# libiconv, libgconvを使っている場合も、大抵のマルチバイト
# 文字変換に困らない程度の余分なメモリを足す様に変更したので
# 4.2.0でlibiconv, libgconvを使っている方もほとんどの
# 場合、メモリを無駄にするコードになっている点を除けば使える
# と思います。完全な対処方法ではありません。変換後の文字列が
# バッファーサイズを越える場合もあります。

--
Yasuo Ohgaki
[ Web Developer Square ]
http://www.webds.net/ 構築中です。
(現在、XHTML準拠のためにコード修正中。準拠してない
ページに対するレポート歓迎します。)