さくらのレンタルサーバへPHP5をGDバンドル版としてインストール
PHP5.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
Posted by minagi at 1:07 |
固定リンク
|
コメント (0)
|
トラックバック (0)