私的アンテナTYPE-F(赤は48時間以内に更新されたコンテンツ)
<|日々の戯言アニメコミックゲーム美少女系ゲームフィギュアドール全般しーぽんちっちゃなもこちゃんえっくす☆きゅーとアキバ系りとらばU-10BLOGネットネタこのサイトについて|>

2006年10月30日 (月曜日)

[ BLOG ]

さくらのレンタルサーバへPHP5をGDバンドル版としてインストール

Powered by PHP5.1.6 (手は指差し手60) - 200 x 135PHP5.1にするとPHP4.4より速いらしい、という噂を元にPHP5.1.6をインストールしてみました。

で、イキナリですがインストール方法については省略。
さくら+PHP5+インストール」で判り易い解説サイトがいっぱい出てきますので、今更ここで書くこともないかと思いますので(^^;
なのでここではGDに関して引っ掛かった部分と、コピーしなくてもPHP5は使えるという補足的なちょっとイイ話(笑)を書いておきます。

そんなわけでまずはインストールです。私は以下のサイトを参考にさせて頂きました。
php5 手動インストール+cgi-mode(レンタルサーバ)
activecollab
さくらのレンタルサーバでPHP5

さてインストールも無事終わり、拡張子.phpでPHP5が動くよう.htaccessを設定して作業完了です。
とりあえずphpinfoを見てみるとバージョンが5.1.6に変わり、他の項目も4.4.4とほぼ一緒、PHP5.iniの設定もちゃんと反映されているようです。
次にBlogを表示させるとこちらも問題なく表示され、PHP製のページ分割プラグインなどもちゃんと動作しているようです。
ということで、移行作業は大したトラブルもなくあっさりと終わってしまいました。
が、ここにちょっとした落とし穴が・・・。

何故か4.4で開発していたGD(画像処理関数)を使った処理が動かなくなってしまいました。
(サイドバーの「最近の画像とか」で使用)

で、PHPのエラーログを見ると「Call to undefined function ImageRotate()」とメッセージがあり、画像を回転させるImageRotate関数が未定義となっているようです。
関数が未定義?ってことで調べてみると、どうやらImageRotateなどの一部の関数はPHPバンドルのGDライブラリでないと使えないとのこと。
更にバンドル版?ってことで調べてみると、何とconfigureからやり直さないとダメなことが判明しましたorz。
imagefilterでサムライフィクション風

そんなわけでPHP5.1.6をGDバンドル版としてインストールするには、configureのGD関連パラメータを次のようにします。

--with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-ttf --with-freetype-dir=/usr/local --enable-gd-native-ttf --enable-gd-jis-conv

インストール時に紹介したサイトでは以下のようにディレクトリが付いていますが、これだとGDバンドル版にはなりません。GD関数をフルに使いたい方は要注意です。

--with-gd=/usr/local --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr --with-ttf

ということで、インストールし直してphpinfoでGD周りを確認。
「Version bundled (2.0.28 compatible)」となっているようで、これでようやく画像の回転が行えますヽ(´ー`)ノ

ちなみにImagettfText関数を使ってちょこッとSisterと文字を入れているのですが、PHP4.4だと文字コードがUTF-8で問題ないのに、PHP5.1だとShift-jisにしないと文字化けを起こします。
--enable-gd-jis-convのJISマッピング指定ってそういうことなの?
まあ微妙な現象も残っていますが、GDに関してはこれで全関数が使えるようになります。


さて、次はPHP5インストール後にコピーしないで使う方法とか。
上で紹介したサイトでは最後の方でcpコマンドで~www/cgi-binなどにPHP5本体をコピーしています。
本来はスマートにシンボリックリンクmod_aliasなどを使いたいところですが、さくらのレンタルサーバでは500エラーとなり動きません。
そこで仕方なくコピーしているというわけです。ですが実はもう少しだけマシな方法があります。
それは「ハードリンク」を作成することです。
やり方はcpコマンドをそのままlnコマンドに置き換えるだけでOK。こんな感じです。

cp /home/xxxxx/bin/php(php-cgi) /home/xxxxx/www/cgi-bin/php5.cgi
ln /home/xxxxx/bin/php(php-cgi) /home/xxxxx/www/cgi-bin/php5.cgi

・2007/06/03【追記補足】
 PHP5.2.3以降は仕様が変わり、cgi動作用実行ファイル名がphp→php-cgiとなります。
 従来のphpはモジュール動作用なので、それをcp、またはlnするとエラー500 Internal Server Errorを起こして動きません。
 間違えないようにして下さい。

一見するとlnで作成されたファイルはサイズも同じで、cpと変わらないように見えます。
ですが、実体は元のPHP5本体と同じIノードポインタ(ディスク領域の管理番号)を使っています。
なのでPHP5本体の約10MB×ドメイン分の領域が節約出来る、というわけです。
但し更新された時点でIノードポインタは変わりますので、リビルド後はハードリンクで作成したファイルを一旦削除、再度リンクを張り直す必要があります。
手間はcpと同じですが、少しでも無駄をなくしたい人向けのワンポイントテクニック(笑)ということで紹介しました。

余談ですがハードリンクはその名の由来通り?、同じファイルシステム上でしか作れません。
そのためPHP4を.php以外の拡張子で動かしたい場合の手順中のcpをlnに置き換えることは出来ません。
これはシステムとユーザー領域が別パーティションになっているためです。

てなわけで、一応他のサイトで触れていない部分を外向けに書いたつもりのメモ書き終わり。
これからPHP5を入れる人の参考になれば・・・ってなるかな('A`)
なおBlogなどで使う分には起動時のオーバーヘッド(CGIモードなので)で、気持ち速くなったかな?程度しか感じないかも知れません。
但し文字列置換などのベンチを取ると、標準の4.4.4より5.1.6の方が明らかに速い結果が出たということは言っておきます。

【関連するトピックス】
さくらのレンタルサーバへPHP5.2.5をインストール
さくらのレンタルサーバへPHP5.2.4をインストール
さくらのレンタルサーバへPHP5.2.3をインストール
さくらのレンタルサーバへPHP5.2.2をインストール
さくらのレンタルサーバへPHP5.2.1をインストール
さくらのレンタルサーバへPHP5.2.0をインストール

【関連するリンク】
PHP: Hypertext Preprocessor

トラックバック
このエントリーのトラックバックURL:

スパム対策の為、トラックバック元URLに本Blogへのリンクを含まない場合、トラックバックを受け付けない仕様になっています。また、Blogやそれに順ずるシステム以外からのトラックバックも受け付けません。予めご了承ください。
なお、お手数ですがトラックバックURLより「☆★」を取り除いてください(オートディスカバリ非対応です)
コメント
コメントする






情報を保存しますか?


画像の数字を入力