[PHP-users 23694] Re: imap_open 関数使用時のエラーに関する相談

mori takamo @ free.japandesign.ne.jp
2004年 11月 22日 (月) 18:10:29 JST


モリ です。

表題: [PHP-users 23681] Re: imap_open 関数使用時のエラーに関する相談
日付: Sun, 21 Nov 2004 19:26:23 +0900
ID:   <003601c4cfb4$93bf57b0$0500a8c0 @ muwa>
"muwa" <muwa @ ba2.so-net.ne.jp> さんの記された上記メールに関してです。

> 当方、PHPについては3〜4年の経験しかないので、良く理解していないところがあ
> ります。

誰にでも知っている事、知らない事、経験、未経験、………はあります。


> 書籍「PHP4 徹底攻略 実践編」のP270には、
> 「このモジュール(恐らく、imap_open を指していると思われる)は、メール受信用
> プロトコルIMAP4に対応していますが、POP3にも対応しています。」
> と記述されています。
> ですから、当方はこの言葉を信じて、トライしています。

疑問に思った時にはマニュアルを見て、間違った指摘なら無視するか教えて
下されば良いですよ。
「こらーPOP3も話せるとマニュアルに書いてあったぞ」と。


多くの解説本には限定された条件でしか成り立たない事が書いてある事も多い
です。例えば、書籍の手法に従って導入・設定している場合に使える記述だと
か。
より基本的な事(例えばimap_openを使う)ならリファレンスマニュアルを確認
した方が確実です。


> レンタルサーバもPOP3のプロトコルでメール受信しており、こちらのほうは問題なく
> imap_open を使用してメール内容をWebアプリで表示することができています。
> ということで、socketを使ってPOPでお話しなくても、imap_open でお話ができると
> 判断したのですが如何でしょうか?

ちょっとまとめてみると、

muwaさんはウェブページを公開するのに2つのレンタルサーバを使っている。
Aウェブサーバで動いているアプリがBウェブサーバでは動いてない。
BウェブサーバでAウェブサーバと同様には動かない部分が特定できていて、
それはimap_openの部分だ。
双方ともimap_openの部分ではC POPサーバからメール取得を試みている。

こんな事情でしょうか。

ここまでが正しいとすると、動かない事情はアプリにあるのではなくC POP
サーバかBウェブサーバにあると思えます。

一時的な問題か恒常的な問題かも判らないですが。それは例えば、たまたま
Bからアクセスした時にCサーバが答えられない状況だったとか。

で、アプリ記述上の間違いがないことがハッキリしている(サーバA上では動い
ている)なら、imap_openの部分が動かない状況を改善する為の第一歩として
何が起こっているかを調べるのも一つの方法です。

そんな方法の幾つかが名前で指定している部分をIPアドレスに換えてみるだと
か、socketを使ってお話ししてみる(実際にPOPを実装するという話しだけでは
なく、socketでお話しできる事を確認するという意味も含めて書きました)だ
とかです。

これらは、imap_openがその処理として行なっているであろう手順を一つずつ
行なっています。動かない部分を特定する事でどう対処すれば良いか見えて
くると思います。


※ Aウェブサーバでは名前の変換ができていてるけどBウェブサーバではそれ
ができてないかも知れないし、AウェブサーバではCサーバのPOPポートとお話
しができるけどBウェブサーバではCサーバのPOPポートとお話しができないか
も知れません。BサーバからもCサーバのPOPポートとお話しはできるけど
imap_open関数ではお話できない(imap_open関数の中でPOPを使う部分が動いて
ない)のかも知れません。

正しい手順で使っているimap_openにストリームが開けないというエラー
メッセージが返されるなら、その原因を探るかimap_openの利用を諦めるか
ですよね。提供しているプロバイダに調べさせる事もできるでしょうし、自分
で調べる事もできるでしょうし。
何ができるか、どうするかは色々な事情を総合的に考え合わせて決めるので
しょうが。


PHP-users メーリングリストの案内