FedoraCore3はデフォルトではPHP4です。FC4からはPHP5なのだけど、今まではPHP4でいいや、と思って使ってました。
けど、最近「オブジェクト指向」というものを避けて通れなくなってきていて、PHP4でもオブジェクト指向は取り入れられているが、PHP5ではよりオブジェクト指向らしくなっていて、書店で本を買ってもほとんどPHP5が前提になってきている。
というわけでPHP5にアップデートをしようと思い始めた。

でも気になる点としては、やはりどこでも言われているように、「既存のPHPアプリケーションが動作しなくなる場合がある」というあたりに関してかなりためらいがあった。けど、調べてみた限りでは、PHP5になっても既存のPHPアプリケーションでClassの定義など使ってなければ多分問題ないはず!という結論に達して、イチカバチカのアップデートに踏み切った。

ソースから入れるのはなんとなく嫌だったので、yumでインストールできないか調べたら、ありました。

http://www.sera.desuyo.net/php5/ FC2/FC3 で PHP5 を使おう

準備

まずは/etc/yum.confの修正から。

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=20
obsoletes=1
#gpgcheck=1  ←コメントアウトする

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

ここから以下を追加
[base]
name=Fedora Core $releasever – $basearch – Base
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/

[updates-released]
name=Fedora Core $releasever – $basearch – Released Updates
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/

[sera.desuyo.net]
name=sera.desuyo.net – $basearch – Kazuhiko’s RPMS
baseurl=http://yum.sera.desuyo.net/$releasever/$basearch/
exclude=httpd*,apr*,apr-util*,mod_ssl*

アップデート開始

[root@linux manage]# yum update
Repository updates-released already added, not adding again
Repository base already added, not adding again
Setting up Update Process
Setting up Repos
sera.desuyo.net           100% |=========================|  951 B    00:00
dag                       100% |=========================| 1.1 kB    00:00
crash-hat                 100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
updates-released          100% |=========================|  951 B    00:00
extras                    100% |=========================|  951 B    00:00
Reading repository metadata in from local files
sera.desuy: ################################################## 61/61
dag       : ################################################## 4672/4672
crash-hat : ################################################## 85/85
base      : ################################################## 2622/2622
updates-re: ################################################## 910/910
extras    : ################################################## 1700/1700
Excluding Packages in global exclude list
Finished
Excluding Packages from sera.desuyo.net - i386 - Kazuhiko's RPMS
Finished
Excluding Packages from Fedora Extras - 3 - i386
Finished
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package php-ldap.i386 0:5.0.4-2.fc3 set to be updated
---> Package php-pear.i386 0:5.0.4-2.fc3 set to be updated
---> Package php-mysql.i386 0:5.0.4-2.fc3 set to be updated
---> Package php-gd.i386 0:5.0.4-2.fc3 set to be updated
---> Package php.i386 0:5.0.4-2.fc3 set to be updated
---> Package php-mbstring.i386 0:5.0.4-2.fc3 set to be updated
--> Running transaction check

Dependencies Resolved
Transaction Listing:
  Update: php.i386 0:5.0.4-2.fc3 - sera.desuyo.net
  Update: php-gd.i386 0:5.0.4-2.fc3 - sera.desuyo.net
  Update: php-ldap.i386 0:5.0.4-2.fc3 - sera.desuyo.net
  Update: php-mbstring.i386 0:5.0.4-2.fc3 - sera.desuyo.net
  Update: php-mysql.i386 0:5.0.4-2.fc3 - sera.desuyo.net
  Update: php-pear.i386 0:5.0.4-2.fc3 - sera.desuyo.net
Total download size: 4.3 M

のようにしてアップデート完了

しかーし、PHPのバージョンを表示しようと思ったらエラーが。

[root@linux etc]# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php4/gd.so' - /usr/lib/php4/gd.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 '/usr/lib/php4/ldap.so' - /usr/lib/php4/ldap.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 '/usr/lib/php4/mbstring.so' - /usr/lib/php4/mbstring.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 '/usr/lib/php4/mysql.so' - /usr/lib/php4/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.0.4 (cgi) (built: May 16 2005 13:19:47)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies

/etc/php.iniを見てみると、extension_dir = /usr/lib/php4のままになっていた。

; Directory in which the loadable extensions (modules) reside.
extension_dir = /usr/lib/php5

また、PHPアクセラレータは今まで頑張ってもらっていたが、PHP5には未対応なので、php.iniからコメントアウト

; PHPアクセラレータ
#zend_extension="/usr/local/lib/php_accelerator_1.3.3r2.so"
#phpa.shm_ttl = 36h
#phpa.shm_size = 16
#phpa.shm_user=apache
#phpa.shm_group=apache
[root@linux etc]# php -v
PHP 5.0.4 (cgi) (built: May 16 2005 13:19:47)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.4-dev, Copyright (c) 1998-2004 Zend Technologies

これでアップデート完了。

Apacheの再起動

ここが一番の問題。
果たして無事にApacheが起動されるか。。
もしちゃんと起動してくれなくてエラーだらけだったら、最悪PHP4に戻さないと、しかし戻し方なんて分からん、と思っていたら・・・

[root@linux etc]# service httpd restart

うまく再起動されました。

確認

[root@linux manage]# cat phpinfo.php
<?php phpinfo(); ?>

とやって、ブラウザでhttp://example.jp/phpinfo.php を表示してみて、ブラウザから見たPHPのバージョンがPHP5になっていればOK。

あとは、MovableTypeやらSquirrelMailとかXoopsとかがきちんと動作するか確認。



こちらもご一緒にどうぞ!