アップデートまでのいきさつ
開発からは7年ほど経過していますが、サーバ自体を去年入れ替えました。ただCentOS5の標準のPHPを使用したため PHPのバージョンは5.1.6 でした。
今まで問題はなかったのですが、Smarty3 にアップグレード した時に問題が発生しました。
具体的には escape 処理を使った時に出力した画面が真っ白になってしまいました。
Smarty3の継承機能が便利な事もあり、 escape が使用出来ない件に関しては目をつぶっていました。
ちょうど、新規開発をするタイミングもあり、原因を調査しようと考えました。
最初にescapeのソースを確認します。
smarty2 function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1') { switch ($esc_type) { case 'html': return htmlspecialchars($string, ENT_QUOTES, $char_set); smarty3 function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true) { if (!$char_set) { $char_set = Smarty::$_CHARSET; } switch ($esc_type) { case 'html': return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
比較すると 関数 htmlspecialchars の double_encode が追加され 引数が異なっています。
double_encode は 5.2.3 からのサポートなのでこれが原因と考えられます。
必要条件には Smarty 3.x: PHP 5.2+ とあるのですが、5.2.3 以降を使用した方が良いかもしれません。
アップデートの手順
CentOS5での手順です。コマンドだけですが。。。# cd /etc/yum.repos.d/
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo
# yum --enablerepo=c5-testing update php
# httpd -k restart
Apacheの再起動をしないと Apacheモジュールとして動かしているPHP は 古いバージョンのままになります。
引き続き。。。
それはまた別の話。と書いていましたが、何日かして、Fatal error: Call to undefined function mcrypt_get_key_size() が発生しました。原因としては mcrypt のモジュールが存在しないという事のようです。確認してみます。Installed Packages Name : php-mcrypt Arch : x86_64 Version 5.1.6
を見るとインストールはされていますが Version が 5.1.6 と古い為にエラーが起きている様です。
確認2. php -v
#php -v
確認2. php -v
#php -v
PHP Warning: PHP Startup: mcrypt: Unable to initialize module ← ここ
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
確認の結果 mcrypt を アップデートする事に決めした。
google ます。
wget ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/fedora/9/olds/x86_64/php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm
この辺は決まり文句。
rpm -e php-mcrypt-5.1.6-15.el5.centos.1.x86_64
rpm -i --nodeps php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm
確認。
#php -v
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
# rpm -qa |grep php
php-5.2.10-1.el5.centos
php-devel-5.2.10-1.el5.centos
php-pear-1.4.9-6.el5
php-common-5.2.10-1.el5.centos
php-cli-5.2.10-1.el5.centos
php-gd-5.2.10-1.el5.centos
php-ldap-5.2.10-1.el5.centos
php-mbstring-5.2.10-1.el5.centos
php-pdo-5.2.10-1.el5.centos
php-mysql-5.2.10-1.el5.centos
php-mcrypt-5.2.10-1.fc9.remi
google ます。
wget ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/fedora/9/olds/x86_64/php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm
この辺は決まり文句。
rpm -e php-mcrypt-5.1.6-15.el5.centos.1.x86_64
rpm -i --nodeps php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm
確認。
#php -v
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
# rpm -qa |grep php
php-5.2.10-1.el5.centos
php-devel-5.2.10-1.el5.centos
php-pear-1.4.9-6.el5
php-common-5.2.10-1.el5.centos
php-cli-5.2.10-1.el5.centos
php-gd-5.2.10-1.el5.centos
php-ldap-5.2.10-1.el5.centos
php-mbstring-5.2.10-1.el5.centos
php-pdo-5.2.10-1.el5.centos
php-mysql-5.2.10-1.el5.centos
php-mcrypt-5.2.10-1.fc9.remi
一つだけ、fc9.remi となっているのは気持ち悪いが バージョンは揃いました。
アパッチを再起動して確認 ! して画面が正常に表示されました。
英語のサイトですが
http://wiki.centos.org/HowTos/PHP_5.1_To_5.2
を参考にしました。
Our totally built-in answer means decreased lead Hand Massager occasions, so engineers can design, check, and manufacture parts sooner and more effectively than with different options. HP® Multi Jet Fusion is a production-grade know-how that spreads out a fantastic layer of powder, deposits a fluid within the desired areas, and then fuses these areas. Selective Laser Sintering uses high-powered lasers to sinter powdered material, binding it collectively to create a solid structure.
返信削除