TOTAL:3436, TODAY:400

etchでPHP4からPHP5にバージョンアップ

etchは、PHP5が正式にリリースされていますが、sargeから移行するとPHP4.4.4になります。私の場合、WindowsのXAMPPもPHP5ですし、持っているPHPの書籍もバージョン5が前提で書かれているので、PHP5にアップしました。問題なくアップできましたので簡単に紹介します。
PHPはApache2.2の一部として動いており、失敗したときのリスクが高いので、一応/etcごとバックアップを取りました。例えば、バックアップ場所が/mnt/shareの場合、次のような感じです。

# cd /
# tar zcvf /mnt/share/etcbk.tar.gz etc

バックアップ後、いつものようにaptitudeでインストールします。

# aptitude search php
# aptitude install php5 php5-gd php5-mysql libapache2-mod-php5 php5-cli

etchにアップした直後から、php5-commonは既にインストールされており、上記のようなパッケージをインストールしました。私の場合、PHP4でインストールされていたパッケージのPHP5対応のものを一気にインストールしました。ログをとり忘れてしまったので、うる覚えですが、上記のようなインストールでlibapache2-mod-php4が自動で削除され、PHP5がリスタートします。この段階で既にPHP5がきちんと動いていました。一応、次のことが書かれたphpinfo.phpというファイルをhttpでアクセスします。

<?php phpinfo() ?>

すると、次のようなページが表示され、PHP5.2.0-8が動いていることが確認できます。

日本語も文字化けすることなく、きちんと動いていましたが、一応、/etc/php5/apache2/php.iniを「玄箱WEBのUTF8化」で設定したのと同じように修正しました。

output_buffering = Off                 <- 文字コードを統一するならOff

    :   : 途中略 :   :

; PHP's built-in default is text/html
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
default_charset = "UTF-8"              <- PHPがhtmlに出力するヘッダコード

    :   : 途中略 :   :

[mbstring]
; language for internal character representation.
;mbstring.language = Japanese
mbstring.language = Japanese              <- 日本語

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
;mbstring.internal_encoding = EUC-JP
mbstring.internal_encoding = UTF-8        <- 内部エンコードをUTF-8

; http input encoding.
;mbstring.http_input = auto
mbstring.http_input = auto                <- 入力を自動判定

; http output encoding. mb_output_handler must be
; registered as output buffer to function
;mbstring.http_output = SJIS
mbstring.http_output = UTF-8              <- 出力をUTF-8


; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
;mbstring.encoding_translation = Off
mbstring.encoding_translation = On        <- 内部エンコードに従って変換

; automatic encoding detection order.
; auto means
;mbstring.detect_order = auto
mbstring.detect_order = auto              <- 判定順はオート

; substitute_character used when character cannot be converted
; one from another
;mbstring.substitute_character = none;
mbstring.substitute_character = none;     <- 変換できないと時の振る舞い

; overload(replace) single byte functions by mbstring functions.
; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
; etc. Possible values are 0,1,2,4 or combination of them.
; For example, 7 for overload everything.
; 0: No overload
; 1: Overload mail() function
; 2: Overload str*() functions
; 4: Overload ereg*() functions
mbstring.func_overload = 0                <- mb系の関数オーバーロードなし

また、「PEARも入れてみる」のページに書いたPEARも次のようにしてインストールしました。

# aptitude search pear
# aptitude install php-pear
# pear remote-list        <- 利用可能なパッケージ一覧を取得するコマンド
# pear install DB

php5-pearではなく、php-pearなので注意してください。後から知ったのですが、PHP5には、PDO(PHP Data Object)というデータアクセス抽象化レイヤが導入されており、PEAR DBは不要かもしれません。PEARを有効にするために、再度/etc/php5/apache2/php.iniを次のように修正します。

; Magic quotes for incoming GET/POST/Cookie data.
;magic_quotes_gpc = On
magic_quotes_gpc = Off                <- gpcをオフにする

; UNIX: "/path1:/path2"
include_path = ".:/usr/share/php"     <- コメントを外し、有効にする

この後、次のコマンドでPHP4のパッケージを削除します。私の場合、aptitude search phpでPHP4の何が残っているかを調べ、削除しました。

# aptitude purge php4-mysql php4-gd php4-cli

最後に、次のコマンドでapache2を再起動すれば、OKです。

# /etc/init.d/apache2 restart

結局、PHP4で設定した項目をPHP5の/etc/php5/apache2/php.iniファイルに設定すれば、すんなり動くようです。phpMyAdminやPHPからのMySQL動作も確認しましたが、問題なしでした。

最新の7件

OpenGL

電子工作

玄箱HG

ホームページ

日記

Copyright (C) 2007 Arakin , All rights reserved.