So-net無料ブログ作成

FreeBSD で Apache2 + PHP5 [PHP]

今、手元で試せないけど、以下のような感じ・・・でいいのか?
後々のためにメモ。

/etc/make.conf に
WITH_APACHE2=yes
DEFAULT_PHP_VER=5

しておいて

# cd /usr/ports/www/mod_php5/
# make install

httpd.conf の中

LoadModule php5_module        libexec/apache2/libphp5.so
AddHandler php5-script .php

(参考)
http://mimori.org/~h/tdiary/20050207.html#p02


PHP のクラスライブラリ、テンプレートエンジン、フレームワーク [PHP]

なんだかいろいろあるなぁ
【PEAR】
http://php.s3.to/tt/pear.php
http://www.php-j.com/tutorial/php/pearDB.php
http://www.amazon.co.jp/exec/obidos/ASIN/4798109592/250-1108649-2079432
Ajaxツールキットっつーのもある
http://itpro.nikkeibp.co.jp/article/COLUMN/20051023/223253/?P=2

【PDO】
PHP5.1 から標準でバンドルされる PEAR DB のテイティブ版みたいなやつ
Perl で言うと DBI みたいなやつ
「初めての PHP5」でも、日本語版に説明がちょっと説明されてる。
http://labs.cybozu.co.jp/blog/hata/archives/2005-10-04-1.html
http://www.doyouphp.jp/php5/php5_pdo.shtml
5.1以降ならこれを使えってことなんだろう

【Smarty】テンプレートエンジン
Flickr っていうので使っているらしい
http://phpspot.org/blog/archives/2005/09/flickr.html

http://www.amazon.co.jp/exec/obidos/ASIN/4798108839/250-1108649-2079432
http://www.gadgety.net/shin/tips/unix/php-tmpl.html
http://sunset.freespace.jp/smarty/

【Mojavi】っていうフレームワークもいいみたい
http://iteman.typepad.jp/blog/files/hustling-mojavi.html
http://mojavi.net/
http://www.mojavi.org/

こういうのは、どんなにいいものでも、みんなが使わなければ意味がないので、
機能よりも、「今後はやりそうか」をよく検討しないといけないのがつらい。
そういう意味では、PEAR, Smarty はいいとして、Mojavi は微妙?


PHP4 と PHP5 の違い [PHP]

PHP5 の入門書を読んだので、PHP5 からさかのぼって PHP4 についてちょっとだけ勉強。
http://www.atmarkit.co.jp/flinux/special/php5/php5a.html
http://www.atmarkit.co.jp/flinux/special/php5/php5b.html
オブジェクト指向の機能など PHP5 で追加された機能はあるけど、PHP4と比べて、下位互換性がなくなっているところで一番大きいのは、オブジェクトの入っている変数の代入文で
$var2 = $var1;
とすると、PHP4 では値渡し、PHP5 では参照渡しになっているところ。
PHP5 で値渡しにしたい場合は __clone() というメソッドを呼ぶ
$var2 = $var1->__clone();
PHP4 で、参照渡しにしたい場合は
$var2 =& $var1;

Java と挙動が同じになるようになったけど、これって影響大きすぎない・・・と思ったら
zend.ze1_compatibility_mode = On にすると、上記のPHP5 での挙動が PHP4 と同じになるらしい
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20040401/1/
しかし、これを使うと PHP4 でも PHP5 でもない代物になりそう。

その他の下位互換性のない変更点(そうそう、この情報が欲しかった)
http://www.php.net/manual/ja/migration5.incompatible.php

PHP6 では UNICODE 対応らしい
http://itpro.nikkeibp.co.jp/article/COLUMN/20050917/221333/?ST=itpro_print
http://itpro.nikkeibp.co.jp/article/COLUMN/20050917/221333/?SS=imgview&FD=2638409
やっぱり、おじさんにはこのスピードにはついていけないかも・・・


PHP4.4.1 を Windows + Apache2 にインストール(その2) [PHP]

http://blog.so-net.ne.jp/nakagami/2005-11-09-2 のつづき

メールを送信すると、 SquirrelMail のサブジェクトが文字化けするのが直ってない
http://sanguine.jp/pipermail/squirrelmail-users/2005-September/001454.html

マルチバイトでコンパイル済みの PHP バイナリをインストールしてみた
0. http://blog.so-net.ne.jp/nakagami/2005-11-09-2 の設定をベースに
1. http://www.geocities.jp/rui_hirokawa/php/win/ からダウンロードしてコピー
2. dll フォルダにある libmbfl.dll を C:\Windows\System32 にコピー
3. php.ini の 「extension=php_mbstring.dll」の行をコメントアウト

まぁ、上の文章を参考にするより、アーカイブに入ってる install-ja.txt を読んだほうがいいです。

結果、メッセージヘッダーの文字化けは、まだ直ってません・・・うーむ。
私の環境依存かもしれませんが、疲れたので PHP のインストールはとりあえず中断。


PHP4.4.1 を Windows + Apache2 にインストール [PHP]

少し前に、 Windows に PHP 4.4.0 をインストールしたが、
http://blog.so-net.ne.jp/nakagami/2005-09-29
4.4.1 が出たので試して・・・ みてはまったので、インストールの手順を逐一書いておくことにしておくことにする。

Apache2 のインストールは、出来ているとして
# Apache2 のインストールは http://blog.so-net.ne.jp/nakagami/2005-09-29 を参照
# してもいいけど、インストーラーでインストールすればいい

【1.ファイルの展開&コピー】
↓PHP 4.4.1 zip package をダウンロードしてきて展開&コピー(以下の例では D:\PHPにコピー)
http://www.php.net/downloads.php

【2.DLL のコピー】←これを忘れて大変はまった
D:\PHP\php4ts.dll を C:\Windows\System32 にコピー

【3.Apache2 の httpd.conf の記述(関係部分)】

LoadModule php4_module D:/PHP/sapi/php4apache2.dll 
AddType application/x-httpd-php .php

【4.php.ini の php.ini-dist との差分】php.ini は C:\Windows にコピー

94c94
< output_buffering = Off
---
> output_buffering = On
106c106
< ;output_handler =
---
> output_handler = mb_output_handler
400c400
< ;default_charset = "iso-8859-1"
---
> default_charset = Shift_JIS
428c428
< extension_dir = "./"
---
> extension_dir = "D:\PHP\extensions\"
541c541
< ;extension=php_mbstring.dll
---
> extension=php_mbstring.dll
1043c1043
< ;mbstring.language = Japanese
---
> mbstring.language = Japanese
1048c1048
< ;mbstring.internal_encoding = EUC-JP
---
> mbstring.internal_encoding = EUC-JP
1051c1051
< ;mbstring.http_input = auto
---
> mbstring.http_input = auto
1055c1055
< ;mbstring.http_output = SJIS
---
> mbstring.http_output = SJIS
1062c1062
< ;mbstring.encoding_translation = Off
---
> mbstring.encoding_translation = On
1066c1066
< ;mbstring.detect_order = auto
---
> mbstring.detect_order = auto
1070c1070
< ;mbstring.substitute_character = none;
---
> mbstring.substitute_character = none;

PHP4 文字コードの設定 [PHP]

http://blog.so-net.ne.jp/nakagami/2005-09-29 の時は、よく分からず設定したけど・・・

phpiniの文字コードの設定
http://allabout.co.jp/career/database/closeup/CU20050321A/

PHPのインストール(Apache2.0 Windows編)「■PHPの設定」
http://www.aconus.com/~oyaji/www/apache_win_php.htm

PHPのインストール(Apache2.0 Linux編)の「◆PHPの設定」
http://www.aconus.com/~oyaji/www/apache_linux_php.htm

International な環境にするためには、デフォルトの状態から
default_charset = UTF-8
だけ設定して、[mbstring]セクションはデフォルト(コメント)のまま、が良いのかな。

それとも default_charset = UTF-8 では、SquirrelMail で日本語がうまく取り扱えないかな?

ちなみに、現状↓の状態で
http://blog.so-net.ne.jp/nakagami/2005-09-29
・メールの検索で、日本語の文字を含むとヒットしない
・アドレス帳の検索はうまくいく
メールの検索は、IMAP サーバー側で行っているので、なんとなくわかる。

追記
現在の環境で、アドレス帳は EUC-JP になってる。↓と同じ。
http://www.na.rim.or.jp/~sawada_k/php/squirrelmail/global_abook.html
ということは [mbstring] の設定が関係しているちゅうことだな。
これが、UTF-8 になるのか?
メール検索は IMAP4 サーバーに UTF-8 で聞けばよいが、
default_charset = UTF-8 でメールの検索も出来るようになるんじゃないか?

追記の追記
functions/i18n.php を見ると

        if ($squirrelmail_language == 'ja_JP') {
            .
            .
            mb_internal_encoding('EUC-JP');


なんてしてるところがある。アドレス帳が EUC-JP になってるのはこれのせいだな。


Exchange Server のフォルダと SquirrelMail [PHP]

Exchange Server と SquirrelMail の IMAPフォルダーに関する取り扱いについて。
いろいろいじくりまわして分かってきたこと。
まず、何も考えずにログインしてメールを送信したり削除したりすると、
・INBOX.Drafts(下書き)
・INBOX.Sent(送信済みアイテム)
・INBOX.Trash(削除済みアイテム)
というフォルダが出来てることに気づく。
カッコ内は日本語版の Exchange Server の相当するフォルダ。

config.php の中を見ると、それぞれの機能をどのフォルダに割り当てるかは
$trash_folder = 'INBOX.Trash';
$sent_folder = 'INBOX.Sent';
$draft_folder = 'INBOX.Drafts';
に書いてある。勝手にフォルダが出来ちゃうのは、
$auto_create_special = false;
となっているから。
とりあえず、$xxxx_folder に、現状の(日本語の)フォルダ名を指定したが、うまく動かない。
sjis euc-jp utf-8 のいずれでもだめ。

各ユーザーの設定で行うことにしてみた。
Folders の Unsubscribe/Subscribe のところで、上記の日本語のフォルダを Subscribe する
Options->Folder Prefereneces の Special Folder Options で
Trash Folder: -> 削除済みアイテム)
Draft Folder: -> 下書き
Sent Folder: -> 送信済みアイテム
を設定する。

いったん、誰かのアカウントで上記の設定をした後で、
data ディレクトリに例えばユーザー foo であれば foo.pref があるので、それを
default_pref に上書きしておけば、あとの設定はそのデフォルト値を使うようになる?

しばらく使ってみたけど、
私の受信トレイに 1500通くらいある環境だと結構遅いので、(タイムアウトになる)
ちょっと日常的に使うのは難しいかなぁ・・・。


SquirrelMail をお試ししてみるプロジェクト [PHP]

SMTP サーバーと IMAP4 サーバーはあるけど、お試しに使えるサーバーは Windows 2003 Server。
Apache2 + PHP4 + SquirrelMail を Windows で動かしてみることにする。

【PHPのインストール(Apache2.0 Windows編)】
[Apache2]
Apache Win32 のインストール設定↓を参考に
http://www.aconus.com/~oyaji/www/apache_win.htm
ここ↓にある apache_2.0.54-win32-x86-no_ssl.msi をダウンロードして実行
http://www.apache.org/dist/httpd/binaries/win32/
(no_ssl じゃなくて with_ssl のやつはないの?まぁ、今回はお試しだから必要ないけど)

途中で
for All Users, on Port 80, as a Service
only for the Current User, on Port 8080, when started manually
のどっちを選ぶか?と聞いてきたので、下を選択した。
ポートはあとで http.conf を修正すればいくつにでも出来るので、上記の違いは
サービスとして起動するかどうかだな。

これだけで、インストールできたので
スタートメニューから「Start Apache in Console」を選択すると
http://ホスト名:8080/
で、アパッチがインストールされているよぉ画面が出る。
インストールの過程で、httpd.conf の変数(ServerRootとか)を自動的に調整してくれるのね。

[PHP]
PHP のインストール
http://www.aconus.com/~oyaji/www/apache_win_php.htm

http://www.php.net/downloads.php にある PHP 4.4.0 installer (exe) をダウンロードして実行
・・・してみたが、なぜか欲しい DLL がインストールされてない。(なんか間違えたか?)
結局アンインストールして、

1.php-4.4.0-Win32.zip を解凍
2.D:\PHP\ 以下にコピー
3.http://www.aconus.com/~oyaji/www/apache_win_php.htm の通りの設定をする
 ■PHPの設定
 ◆ApacheのPHP関連の設定
なんだかよく分かってないけど

PHP 4.4.0 に対するパッチの話↓
http://sanguine.jp/pipermail/squirrelmail-users/2005-September/001454.html
し、しまった。よく見たら C のソースだ。これは直せないので我慢しておく。

【SquirrelMail】
http://www.squirrelmail.jp/node.php?id=13
↑を参考に↓にあるパッチ済みものを取ってくる
http://www.yamaai-tech.com/~masato/Download/
私が取ってきたのはこれ↓
squirrelmail-1.4.5-ja-20050714.tar.gz
解凍して適当なディレクトリにコピー。
本当は、Perlスクリプトで設定を書き換えるようだけれども、
http://www.squirrelmail.jp/node.php?id=30
Perl は入ってないので、config ディレクトリにある config_default.php を
config.php という名前で、同じディレクトリにコピーして、
$domain
$smtpServerAddress
$imapServerAddress
$imap_server_type
の値を適当に変更。また、
$squirrelmail_default_language = 'ja_JP';
$default_charset = 'iso-2022-jp';
と設定。なお、SquirrelMail の上のファイルは改行コードが LF なのでメモ帳じゃ編集できない。
また、
Options->Personal Information で自分の Email Address を書き換えられないようにするには、
$edit_identity = false;
も設定

うーむ。「PHP 4.4.0 に対するパッチの話」は置いておいても、
Subject: が BASE64 encoding されてないで、そのまま出力されてる。
だめじゃん。どっかの設定がダメなんだと思うけど・・・。
↓やっぱり、同じ問題か?
http://sanguine.jp/pipermail/squirrelmail-users/2005-July/001411.html
http://d.hatena.ne.jp/desutai/20050725
とりあえず、今はお試しなのでそのままにしておく

必要になったときに見ておくべきところ
http://www.na.rim.or.jp/~sawada_k/php/squirrelmail/