BlueOnyx に標準で入っている PHP は 5.1 とバージョンが古いので,5 系の最新である 5.3.X をインストールしてみた。今のところ,特に問題なく動いているようにみえる。そのときの手順をメモしておく。
EPEL, Remi レポジトリのインストール
yum で PHP 5.3 と MySQL 5.1 を インストールするために,EPEL と Remi というレポジトリを有効にしておく。
# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
# sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
# sed -i -e "s/enabled=1/enabled=0/" /etc/yum.repos.d/remi.repo
5.1 系モジュールの退避
そのまま 5.3 にアップデートするとコンパネが動かなくなってしまうので,モジュールを退避しておく。
# cp -a /usr/lib/php/modules /usr/lib/php/modules51
# cp -a /usr/lib/httpd/modules/libphp5.so /usr/lib/httpd/modules/libphp5adm.so
さらに,次の3つのファイルを下記のように書き換える。
# vi /etc/admserv/conf.d/php.conf
#LoadModule php5_module modules/libphp5.so
LoadModule php5_module modules/libphp5adm.so
# vi /etc/admserv/php.ini
;extension_dir = /usr/lib/php/modules
extension_dir = /usr/lib/php/modules51
# vi /etc/php.d/ioncube.ini
;zend_extension = /home/solarspeed/ioncube/ioncube_loader_lin_5.1.so
PHP と MySQL のアップデート
いよいよ yum で PHP と MySQL をアップデートする。
# yum update -y php* mysql* --enablerepo=epel --enablerepo=remi
各種デーモンを再起動する。
# /etc/init.d/httpd restart
# /etc/init.d/admserv restart
# /etc/init.d/mysqld restart
MySQL の DB 名に #mysql50# という文字列が付加されている場合があるので,コンパネの phpMyAdmin で元に戻す。
以上で PHP 5.3 が使えるようになった。
$ php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:41:20)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
参考ページ
(2010/11/06 追記)
PHP 5.3 にすると,プログラムによっては次のようなエラーが出るようになる。
Deprecated: Assigning the return value of new by reference is deprecated in ...
この表示を抑制するには,php.ini で次のように設定すれば良い。
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
(2011/01/30 追記)
次のような Waring が出る場合がある。
Message: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead
これを解決するには,php.ini で次のように設定すれば良い。
date.timezone = Asia/Tokyo
さらに次のような表示が出る場合がある。
Message: Call-time pass-by-reference has been deprecated
これを解決するには,php.ini で次のように設定すれば良い。
allow_call_time_pass_reference = On
(2011/05/03 追記)
MySQL で文字化けが発生する場合,my.cnf に以下のように追記すると直るかもしれない。
# vi /etc/my.cnf
[mysqld]
character-set-server = utf8
:
[client]
default-character-set = utf8
:
(2011/06/06 追記)
suPHP がうまく動いてないので要調査だ。
(2011/06/01 追記)
PHP を実行したときに,次のようなエラーが出るようになる。
Failed loading /home/solarspeed/ioncube/ioncube_loader_lin_5.1.so: /home/solarspeed/ioncube/ioncube_loader_lin_5.1.so: undefined symbol: zend_unmangle_property_name_ex
これを解決するために,次のようにして Ioncube Loader をアップデートする。
# cd /usr/local/src
# wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
# tar -xzf ioncube_loaders_lin_x86.tar.gz
# cp ioncube/ioncube_loader_lin_5.3* /home/solarspeed/ioncube
# sed -i -e "s/ioncube_loader_lin_5.1.so/ioncube_loader_lin_5.3.so/" /etc/php.d/ioncube.ini
コメント
[…] また初期化して、次は下記でやってみよう! https://onair.jp/archives/574.html http://blog.dc-d.jp/?p=1091 […]
[…] BlueOnyx で PHP 5.3 を使う […]
[…] BlueOnyx で PHP 5.3 を使う : あかぎメモ […]
[…] どうも調べてみたらPHP5.1じゃないと動作しないようです。 そこで、PHP5.1は残しておくために退避させます。参考にさせていただいたサイトはあかぎメモ「BlueOnyx で PHP 5.3 を使う」です。 […]