バージョンアップ
pukiwiki1.4.6へのバージョンアップついでにPHPも4.4.1へバージョンアップ
こう頻繁にバージョンアップがあるとインターネットサイトではPHPは使えない!・・・
pukiwiki1.4.6へのバージョンアップついでにPHPも4.4.1へバージョンアップ
こう頻繁にバージョンアップがあるとインターネットサイトではPHPは使えない!・・・
いままでずーとピアーとよんでいたけれど、洋梨と言う単語なので正しくはペアーと読むそうな
OracleもWebUIの管理ツールに移行している昨今オープンソースDBも負けず劣らずのWebUI管理ツールがある。
PostgreSQLにはphpPgAdmin
MySQLにはphpMyAdmin
PHP5にしてからあまりまじめに動作検証していなかったのでここらでまじめに検証してみる。
インストールは解凍するだけ
PHPでブラウザアクセスしてみてうんともすんともいわずに画面が真っ白になるときの対策
実はこれ裏でエラーが出てて、Apacheのエラーログには出力されている。 本番運用にはエラーメッセージは画面には出さないべきだろうが開発中はいちいちログを見るのがめんどくさいので画面に出力するように変更しよう。
php.ini (場所はOSによって異なるのでphpinfo()で確認しよう)のdisplay_errors = OnにしてApacheを再起動する。
本番運用時に元に戻しておくこと!
PHPは標準関数にこういった使用頻度の高いものが用意されていて便利。
たった一行でいい
if
(!checkdate($month,$day,$year)) {
return FALSE;
}
こんな感じ!
PHPで画面にまったく何も表示されずソースを見てもほとんど何も出力されていない時がある。
実はこれ複数原因があるが、以下見ていこう。
まずは出力の文字コードが違う場合IE6だと画面が真っ白になる。この場合はソースの表示をさせると本来出力される内容が出てくるのでその場合はエンコーディングの自動選択を選ぶ(もしくはわかっていればそのエンコードを指定する)
次にソースを見ても手がかりとなるような出力がない場合だが、コレは単純でphp.iniでエラーがApacheのエラーログに出力されるようになっているだけだ。エラー情報は開発中は画面に出たほうがうれしいのだが、運用時に出してしまうとPHPのバージョンがわかってしまったりして思わぬ攻撃の手がかりを与えることになりかねない。ほとんどのディストリビューションのデフォルトではPHPのエラーはApacheのエラーログに出力されるようになっている。
もし出力するようにしたければphp.iniの以下の場所を変えて、Apacheを再起動すればよい。
display_errors = Off←On
RedHat系のディストリビューション(Fedora,CentOS)であればエラーログの場所は下記にあるはず。
/var/log/httpd/error.log
VineLinuxではApacheのバージョンが1か2によるが
/var/log/apache/error.log
/var/log/apache2/error.log
開発サーバーであれば画面に表示するように変更してもいいだろう(というか変更すべき!)
実はサーバ移行以来Pukiwikiのshowrssプラグインが文字化けしていた。
文字コードがUTF-8になったのが原因かなと思って、 内部エンコード調べようとしたらmb_internal_encodingの関数がないとエラーがでていた (画面には出力されないので/var/log/httpd/error_logに出る)
というわけでマルチバイト関数をyumでインストールしなければならないけどパッケージ名はなんだっけとネットで検索したところ php-mbstringらしい。というわけで早速yum
# yum install php-mbstring
httpd再起動をしないと反映されない。
# service httpd restart
無事showrssの文字化けがなくなった。
CentOS(FedoraもRedHatEnterpriseも)のPHPパッケージはVineなどと比べると若干日本語対応においてつまづきがちであるので注意したいところ。
phpのセッションデータはデフォルトではファイルで保存されている。
保存先はphpinfoで表示される「session.save_path」になる。
CentOSだと/var/lib/php/session
CakePHP+PHP4のときにセッションが持続できない問題が発生しているための調査をしている最中。 ノーマルPHPだとセッション維持できるのだが・・・
CentOS4系ではPHP4.3.x系
いまどき
PHP4はないでしょうに、デフォルトのままだといくらアップデートしても5.xにはならない
(勝手になっても困るのだが)
というわけで通常のリポジトリにcentosplusを加えてやることで実現可能
# vi /etc/yum.repos.d/CentOS-Base.repo
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
# yum update php
インストール環境にもよるが、恐ろしいほどの依存パッケージがあるので一気にUPDATE!
centosplusのリポジトリを加えたら(方法は前のエントリー参照)
こんなものまで入っていたのかと新しい発見。
ちょっと前は自力コンパイルして導入したのだが、
PHPアクセラレーターのAPCもyumでインストール可能
# yum search apc
# yum instal l apc
アクセラレーター入れたことで不具合が出る可能性も過去にあったので
既存環境に導入するときは入念なチェックが必要だろう。