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
- ClamAVのアップデート
- Smartyも入れてみる
- etchでPHP4->PHP5
- etchでのSamba設定
- etchでのメール設定
- 玄箱HGのetch化
- Webdruidでログ解析
- PEARも入れてみる
- 玄箱WEBのUTF-8化
- phpMyAdminでMySQL
- postmasterの変更
- ウィルスメール対策
- SPAMメール対策
- メールサーバ(IMAP)
- メールサーバ(Postfix)
- 猫にXOOPS
- PHPも入れてみる
- MySQLを入れてみる
- Subversion導入
- WebDav導入
- Apacheのrewrite機能
- Apacheディレクトリ設定
- Apache1.3->2.0
- ddclientの設定
- 静かな玄箱
- ユーザ追加