August 25, 2003
RedHat8.0へmbstringを有効にしてPHP共有モジュールをインストールし直す。

sgn::blog > hatena2js
http://www.aether.jp/sgn/blog/archives/000213.html

を参考に、phpを使用した、ブログを楽しむMLの方々のブログへのリンク集をページにのっけることにしました。
が、hatena2js.phpを実行すると mb_convert_encoding() の所で、そんな関数知らんぞ!とFetal Errrorになってしまいます。

 RedHat8.0についてきたApacheにデフォルトで組み込まれるphpモジュールでは、マルチバイト文字列関数(mbstring)使えないんですね。。
 仕方ないので、Apacheサーバの既存のPHPモジュールをアンインストール後に、新しくmbstringを有効にしてDSO(mod_so.cによるApacheの共有モジュールとして)でインストールしなおすことにします。

↓追記@2004年02月08日
mbstringを有効にしてsrcからリビルドしなおしたphp-4.2.2-17.2.i386.rpmをアップロードしました。

簡単に設定するには、、
mbstringを有効にしたphpのrpmパッケージ(Redhat9.0用)
php-4.2.2-17.2.i386.rpm
をダウンロードして、
rpm -Uvh php-4.2.2-17.2.i386.rpm
でいいはずです。
設定ファイルがコンフリクトするので、既存のパッケージは一度アンインストールしたほうがいいかもしれません。
↑追記終わり

手順については、
ドルフィーソフトウェア > PHPインストール
http://www.dolphy.gr.jp/webap/env/php-install.html
を参考にしました。

STEP 1

# rpm -qa | grep php
で、既にインストールされているPHPを検索します。
パッケージが存在していたので、
# rpm -qa | grep php | xargs rpm -e
で全てアンインストールします。

STEP 2
PHP自体は、PHPオフィシャルのダウンロードページ(http://www.php.net/downloads.php) で手に入ります。
私は、バージョン4.3.2を使うことにしました。
早速、

$ tar xvfz php-xxx.tar.gz
$ cd php-xxx
$ ./configure \ ※1
  --with-apxs2filter=/usr/sbin/apxs \ ※2
  --enable-mbstring \
  --enable-mbregex \
  --with-mysql
$ make
$ su
# make install -sapi ※3

※1 configureのオプションは最低限のもののみ記述。
詳細は PHPマニュアル の 設定オプションの完全なリスト(http://search.net-newbie.com/php/install.configure.html) を参照。
--with-apxs2filter=/usr/sbin/apxs Apache 2.0.40以上(RedHatLinux 8.0, 9.0のデフォルト)
--with-apxs=/usr/sbin/apxs Apache 1.3.x (RedHatLinux 7.3)
--with-apxs2=/usr/sbin/apxs Apache 2.0.44以上.

※3 DSO版としてインストール

のようにしてインストールしようとしましたが、残念ながらいろいろと足りないぞ!とエラーが出てしまいました。仕方ないので、まずは必要なものを手に入れることにします。

STEP 3
httpd-devel はApacheのDSOモジュールを作成するapxsプログラムを含んでいるので、必要です。
httpd-devel のインストールには依存関係から、
autoconf
automake
libtool
も必要です。
autoconf、automake、libtool、httpd-devel(依存関係上この順番にインストールが必要)は
全てRed HatからRPMパッケージが提供されているのでそれを使います。
Red Hat Downloads(http://www.redhat.com/apps/download/)の「Find Latest RPMs」から探せばすぐに最新のRPMパッケージは見つかりました。

# rpm -ivh xxx-yyy.rpm
で、インストールします。

※古いバージョンのhttpd-develはバグがあって
sh: line 1: /usr/lib/httpd/build/instdso.sh: No such file or directory
axps:Error: Command failed with rc=8323072

と言うエラーを吐いてしまい、インストールが上手くいきません。最新版なら大丈夫。

私の環境では、
configure: error: cannot find output from lex; giving up
と言うエラーも出たので、
Fast Lexical Analyzer Generator (http://freshmeat.net/projects/flex/?topic_id=45)もダウンロードし、インストールしました。

$ tar xvfz flex-xxx.tar.gz
$ cd flex-xxx
$ ./configure \
$ make
$ su
# make install

STEP 4
必要なものを詰め込んで、もう一度STEP 2の通り、PHPのインストールにチャレンジします。今度は上手くいきました!

PHPの設定ファイル php.ini を作成します。

$ cp php.ini-dist /usr/local/lib/php.ini

php.iniのmbstring関係の内容を修正します。

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
;mbstring.http_output = SJIS ※ここをコメントアウトすると、utf-8環境でhatena2js.phpをそのまま使うと文字化けます。
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.script_encoding = auto

httpd.confの内容を修正します。

LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php

あとは、Apacheを再起動すればOK!

Posted by Ken.eu at August 25, 2003 08:48 PM | コメント (2) | トラックバック (1)
コメント

非常に参考になりました。
ありがとうございます。

Posted by: key at January 18, 2004 10:57 PM

私のRedHat8.0にはapxs というファイルが見えないのですがどうすればいいですか。
もともとRedHat8.0のデフォルトPHPrpmを使っていましたがマルチバイト関数を使いたいので貴サイトを参考させていただいています。
ちなみに私はphp4.3.8をインストールしましたがCTL版だったので削除したいと思ってどうすればいいですか?
教えてください。

Posted by: 壱崎 at July 31, 2004 01:12 AM
コメントの投稿!









Remember personal info?







トラックバック

このエントリへのトラックバックURL:
http://nanitozo.com/log/cgi/mt/mt-trackback.cgi/173

トラックバック元のサイト
mbstringの組み込み
Excerpt: このサイトをホストしているサーバーは、PHPをRPMでインストールしたため、mbstring関数が使えなくなっていました。そこで、eulog.のRedHat8.0へmbstringを有効にしてPHP共有モジュールをインストールし直す。を参考にmbstring付きのRPMを使ってPHPをインストールし直した...
Weblog: emitter
Tracked: June 21, 2004 08:37 PM