備忘録のため,内容の正当性については責任を持ちません。

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

コメント

コメント(4) “BlueOnyx で PHP 5.3 を使う”

  1. […] どうも調べてみたらPHP5.1じゃないと動作しないようです。 そこで、PHP5.1は残しておくために退避させます。参考にさせていただいたサイトはあかぎメモ「BlueOnyx で PHP 5.3 を使う」です。 […]

コメントする




CAPTCHA