2010年11月15日

Debian に Zend Framework をインストール

現在動いているメールフォームは PHP 標準機能とか mb_string ぐらいしか使っていなくて、わりと持ち運びしやすいスクリプトではあるのだが、ServersMan@VPS ではメールサーバを立てるつもりがないので mail 関数がそもそも使えなくなる。
外部の SMTP サーバを使ってメールを送信するには PEAR::Mail を使う手もあるが、今回は Zend Framework に存在する Zend_Mail を使ってその辺を作ってみようと思う。
なので Zend Framework 自体をインストールする。
cd ~
wget http://framework.zend.com/releases/ZendFramework-1.11.0/ZendFramework-1.11.0-minimal.tar.gz
tar -zxf ZendFramework-1.11.0-minimal.tar.gz
cd ZendFramework-1.11.0-minimal
bin と library ディレクトリをインストール先に配置したい。まずは library を取りあえず他のPHPのファイルもある /usr/share/php を真似て /usr/local/share/php に一緒に突っ込んでしまうか。
mv library /usr/local/share/php
あとは bin だけどこれも慣例的には /usr/local/bin でいいのかな? これは中身を入れる。
zf.bat は Windows 用のファイルで必要ないので消してしまおう。
あとマニュアル上では zf ってコマンドで呼ぼうとしてるので合わせるようにしてみる。
cd bin
rm zf.bat
mv zf.sh zf
chmod 755 zf
mv * /usr/local/bin
php.ini に /usr/local/share/php を見に行くようにさせる。php5-fpm と cli の両方を設定しないとダメそう。
あとスクリプトを書き始めてから php.ini で date.timezone と mbstring.language と mbstring.internal_encoding が未設定なことに気づいた。この設定もこの辺でしておくとよさげ。
vim /etc/php5/fpm/php.ini
;include_path = ".:/usr/share/php"
include_path = ".:/usr/share/php:/usr/local/share/php"
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
ファイルのアップロードサイズも大きめのファイルを添付できるように少し引き上げる。ここの設定を書き換えると全体に適用されてしまうのであまりよくなさそうな気がする。
post_max_size = 25M
upload_max_filesize = 20M

cli側も同じように。アップロード周りは当然意味がないので特になにもしない。
vim /etc/php5/cli/php.ini
;include_path = ".:/usr/share/php"
include_path = ".:/usr/share/php:/usr/local/share/php"
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

設定が終わったので反映させる。
invoke-rc.d php5-fpm reload
これで Zend Framework のプロジェクトをコマンドラインから簡単に新規作成できるようになった。
が、今回は本当に Zend_Mail を使いたいだけで全部を Zend で作るつもりはなかったりするのでパスする。

実際にスクリプトを書くのは思ったよりも全然簡単に済ませることができた。
昔書いたメールフォームのスクリプトがちゃんとメール送信周りを綺麗に切り分けてあったおかげで、その周辺を Zend_Mail に切り替える以外の作業はしなくて済んだ。

sendmail に丸投げしていたものに比べると処理速度が若干遅くなってしまったのが残念だが、これを解決しようと思うとバックグラウンドジョブに投げるか、裏でサーバを立ててメールフォームのスクリプトからキューにデータを追加するようなものを書かなければいけなくなる。
そんなに死ぬほどいっぱい使われるフォームでもないのでその辺はサボることにしたら、メールフォームの移植作業終わり。
Clip to Evernote