うぇブログ2
最新エントリ
2004/09/26
|
カテゴリ : PHPメモ
執筆者:
itoh (7:19 pm) |
sendmailを使って直接メール送信をしたい。 と思った。理由は、メールを純粋に転送したいため。 PHPでは、mb_send_mailというメールを送るだけならとても便利な関数があるのだが、今回はコレを使うとヘッダ情報が全部吹っ飛んでしまう。まぁ、別に良いと言えば良いのだが、なんかいやだ。 そう思って、「直接systemの/usr/sbin/sendmailをたたいてやればよいのでは?」と思って試行錯誤。 とりえあず、 system("echo ?"{$mailcontent]}?" | /usr/sbin/sendmail -i {$to_addr} "); などが最初に考えられるので、やってみるがうまくいかない。echo $mailcontentのぶぶんがうまく行かないようで、空のメールが送られる。 sendmailのコマンドの使い方が悪いのかと調べてみたけれど、よくわからない。うーん。困った。 そこへ、たまたま見た、PHP-users-ML:23361で「あぁ。これか」というのをみた。 引用: $mp = popen("/usr/sbin/sendmail -f $from $to", "w"); 実は、Perlのメール送信フォームでもここなどを読んで、STDIN(標準入力)から受け取る時は、open関数でやっているので、なんとなくこれでいけないかなぁとおもっていたところなので、とてもラッキー。これを使って問題なく完了。 しかし、apacheから呼んだ時に、system("echo hoge > /tmp/aaa.txt")などとした場合には、aaa.txtが/tmpに作成されなかったのだが、標準出力の方向はどこに行ってしまうのだろう?それは不思議だ。 |
2004/09/23
|
カテゴリ : PHPメモ
執筆者:
itoh (2:21 am) |
というわけで、性懲りも無く自宅のMacOSXのPHPをimap関数が使えるようにしようと思ったわけで。 で、rootになって # fink list | grep c-clinet してみると、 irc-client [virtual package] uw-imap-c-client 2002d-14 UW IMAP C-Client Library uw-imap-c-client-ssl 2002d-15 UW IMAP C-Client Library *SSL VERSION* uw-imap-c-client-ssl1-shlibs 2002d-15 UW IMAP C-Client Library *SSL VERSION* uw-imap-c-client1-shlibs 2002d-14 UW IMAP C-Client Library とでる。なんか、古いなーと思っていたら、 # fink install wu-imap-c-client とやっても、やっぱりinstallできなかったわけで。 しょうがないから、PHPマニュアルページにあるとおりに、c-clientをtar.gzでもってきて仰せの通りにインストール。MacOSXでも、/usr/local/libにlibc-client.aを持ってくるのと、/usr/local/include配下に*.h類を持ってくれば良いのは一緒。 (といっても、手動では成功したこと無かったのだが) さて、php-4.3.8のソースディレクトリに戻って、おもむろにconfigure # ./configure --with-gd --with-jpeg-dir=/sw --with-png-dir=/sw --with-tiff-dir=/sr --with-zlib-dir=/usr/local --with-mysql=/usr/local/mysql --with-apxs --with-xml --enable-track-vars --enable-sockets --enable-ftp --enable-mbstring --enable-mbstr-euc-trans --with-config-file-path=/etc --with-imap=/usr/local ところがエラー。 うーん。 table of contents for archive: /usr/local/lib/libc-client.a is out of date とかでる。これは、config.log をみると、 引用: ld: libc-client.a: warning: table of contents for archive is out of date; rerun ranlib(1) とかでている。 これは、rootで # ranlib libc-client.a しなさいと言われているので、素直に従う。 で、再度configure ...... うまくいかない。 今度は相当悩んだ。configureファイルとか読んじゃって。9万行もあるのね。コレ。だいたい、Cなんてわかんないし。 ただ、わかんないにしても、じっとながめていると、(←コレ重要) ・・・・・・・ん〜、なんか、SSL関連で引っかかってるのかなぁ。という気になってきた。 そこで、さっきのconfigureオプションに、 --with-imap-ssl をつけて再度挑戦。なんで、このconfigureオプションが思いついたかって言うと、それは前回のRedhatでのconfigure時に同じように--with-imapだけでやったら、 --with-imap-ssl --with-kerberos をつけなさい。 と怒られたことに依る。経験は無駄にはならないんだなぁ。もっとも、ぼんやりとやっていると気がつかないだろうから、それはそれだけど。 さて、、、、、、 おぉ!成功だ! これで、makeが通らなかったら泣きます。 MacOSX(10.3.4)は--with-keyberosは要らないみたい。 |
2004/09/21
|
カテゴリ : PHPメモ
執筆者:
itoh (4:49 pm) |
imap関数ですが。 山本さんによると、imap_search/imap_sortは日本語には(というよりマルチバイトには)対応していないようだ。 で、パッチを用意してもらっているが、PHP4.3.2までで。 うーん。まいったなぁ。 というところであるか。 |
2004/09/17
|
カテゴリ : PHPメモ
執筆者:
itoh (12:58 pm) |
imap_fetch_overview は array( $mail_infomation_object) で返してくれるので、 返り値は、1つしか要素のない配列。 (だったら、オブジェクトで返してくれればいいじゃん) imap_mime_header_decode で、subjectを得ようとすると、配列になって帰ってくる。 これは、サブジェクト中に違う文字コードが混じると(というか、ASCIIと非ASCII)subjectが複数行になってしまうための対応だろう。 したがって、得るときもそれを考えないとsubjectが一部分しか得られないと言うことになる。 |
2004/09/17
|
カテゴリ : PHPメモ
執筆者:
itoh (10:58 am) |
PHPにIMAPモジュールを組み込みたいと思った。 POP3が喋れるようになるので色々便利。 http://php.s3.to/man/ref.imap.html を見つつ、c-clientライブラリをmakeして、インストール。 PHPを--with-imapでconfigureして・・・・と思ったら、エラー。 c-clientのrfc822.hが無いと言われる。 --with-imap=/usr/local/include/php とインストールした場所を指定してconfigure。・・・・エラー。 libc-client.aが無いと言われる。 しかし、ちゃんと/usr/local/libに入っている。 --with-imap=/usr/local/libなどとしてもダメ。rfc822.hが無いって。 うーん。困った。と思い、 http://limu.is.kyushu-u.ac.jp/~yosimoto/memo/webserver.html を読み、そうだrpmだ。と思い、使ってるのがRedhat 7.2なので、 imap-2000c-15.i386.rpm imap-devel-2000c-15.i386.rpm を入れる。で、configure 途中、--with-kerberos --with-imap-sslが無いといわれるので、 ./configure --with-imap --with-kerberos --with-imap-ssl としたら、 おお、configureが通った!! 感動しつつ、makeすると。。。。。 エラー もう泣きそう。 ふと気が付いて、--with-imap-sslなのに、standardでsslが効いてないのでは?と思い、configureに--with-opensslをつける。 だめ。makeできない。 ふと、config.niceを見ると、(今まで./configureではなく、config.niceに新規オプションを付けてconfigureしていた。) './configure' \ 'list' \ '--with-imap' \ '--with-kerberos' \ '--with-imap-ssl' \ '--with-openssl' \ '--with-imap' \ '--with-kerberos' \ '--with-imap-ssl' \ '--with-openssl' \ となっている・・・・なんじゃこりゃ?やはり横着はいかんなと、マジメに./configureに人つづつオプションを付ける。 ダメ。もうわからん。 で、手持ちのいろんなRedhatでやってみた。 結果、 Redhat7.3で、PHP-4.3.8に対して、 imap-200*.i386.rpm imap-devel-200*.i386.rpm をrpmでインストールして、 ./configure --with-apxs --with-jpeg-dir --with-png-dir --with-zlib --with-xml --with-mysql --enable-track-vars --enable-ftp --enable-mbstring --enable-mbstr-euc-trans --with-imap --with-kerberos --with-imap-ssl したら、make make installできた。なんでだろう? まぁ、いいか。RedHatの専門家でもないから。 |
2004/09/04
|
カテゴリ : PHPメモ
執筆者:
itoh (2:48 pm) |
・global宣言 function内で、global変数を使いたい時に使うが、変数がごちゃごちゃしそうで使ったことが無かった。 これで宣言した変数でglobal化が有効になるのは、「実行ファイルで使っている変数のみ」includeしたfunction内で呼んだのはglobal化されんよね。あたりまえだけど。 そうなると、include_onceが無かった時には結構大変だったような。 ・クラスの継承(↓は、多分そう) PHP4の継承では、スーパークラスのプロパティメンバは継承されないようだ。Javaと違って、継承時に暗黙的にスーパークラスのオブジェクトは作成されないようだ。 だから、スーパークラスのプロパティメンバを呼びたい時には、newで作成しなければ。でも、それってオブジェクト作りすぎるんじゃないですか? 継承クラスの中でつかうスーパークラスのオブジェクトは1つにしたいなぁ。 |
2004/09/01
|
カテゴリ : PHPメモ
執筆者:
itoh (1:58 pm) |
array_push($array , $var); の代わりに、 $array[] = $var; とすることもできる。 ただし、array_pushは先に$array = array();とかやっておかないと、 parse errorを吐くのだが、$array[] = $varのほうは、何もいわずにハングする。注意。 |
2004/08/29
|
カテゴリ : PHPメモ
執筆者:
itoh (3:39 pm) |
MacOSX10.3にデフォルトで入っているPHPは4.3.2で、GDが入っていない。 http://php.liukang.com/manual/ja/install.macosx.php http://developer.apple.com/internet/opensource/php.html を参考に、ソースからビルド。 とりあえず、 # fink install gd # fink install gd2 とするが、--with-gd をつけて ./configureしても通らない。 # fink install libjpeg # fink install libtiff # fink install libpng として、(libpngはなぜかインストールできなかったが) ./configure --with-gd --with-jpeg-dir=/sw --with-tiff-dir=/sw --with-png-dir=/sw とすると、pngで止まる。pngには、zlibが必要だとのことで、 # tar -vzxf zlib-1.1.4.tar # cd zlib-1.1.4 # make # make install として、インストール。これで--with-zlib-dir=を指定してうまくコンパイルできた。 下記がconfig.nice 。 './configure' '--with-gd' '--with-jpeg-dir=/sw' '--with-png-dir=/sw' '--with-tiff-dir=/sw' '--with-zlib-dir=/usr/local' '--with-mysql=/usr/local/mysql' '--with-apxs' '--with-xml' '--enable-track-vars' '--enable-sockets' '--enable-ftp' '--enable-mbstring' '--enable-mbstr-euc-trans' '--with-config-file-path=/etc' |