2012-01-30 3 views
4

私は、次のような簡単なメールシステムを、設定した:私は、スクリプトを実行しようとするとPHPメールが無期限にハングアップする - どのようにデバッグするのですか?

$from = 'me <[email protected]>'; 
$to = 'you <[email protected]>'; 
$subject = 'subject'; 
$body = 'body'; 

$host = 'www.me.com'; 
$headers = array('From' => $from, 'To' => $to, 'Subject' => $subject); 

$smtp = Mail::Factory('smtp', array('host' => $host, 'auth' => true, 
         'username' => 'username', 'password' => 'password')); 
$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    throw new Exception('emailException'); 
} 

は、しかし、ブラウザ(クローム)が無期限ハングアップします。スローされた例外はありません。ブラウザにエラーページが表示されず、応答が待っています(12分以上、私はそれを放しています)。

私の実際のプログラムは少し異なります(コードは、情報がパラメータとして渡された関数に囲まれています)。私は静的なデバッグを使用して、渡されたパラメータが正しいことを確認しましたが、エラーはないので、$ mailのエラー情報もテストできません。

これをデバッグする方法を知っている人はいますか? 、$ smtp->送信(...)これをデバッグ

+1

これは、これとよく似ています。http://stackoverflow.com/questions/9063517/effect-of-using-php-mail –

+0

このテストケースで問題が解決されないことを確認できますか?あなたの「実際のプログラム」は厳密には関連していません。 –

+0

Er、また、私はここでは 'mail()'の呼び出しを見ません。 –

答えて

0

は、ログファイルで行うことができるの呼び出しがあなたには、いくつかのPEARエラーを見つけるかもしれないときに私はページを確認することができ

更新がハングアップします。

さらに、コードの各行の間にechoステートメントでデバッグして、どこでハングするかを正確に知ることができます。

既存のホストに接続しようとすると、遅延が長くなる可能性があります。 12分は非常に長いですが、それは私が検索を開始する場所です。指定されたSMTPサーバー経由で送信する必要があるため、PEARクラスを使用する必要がありますか?

+0

はい、私は指定されたsmtpサーバを通して送信しています。私はPHPを初めて使いました。これは文字通りPEARで行ったことですが、ログファイルがどこにあるのか知っていますか? (私はubuntuを使っています) – Tom

+0

/var/log/apache2 /通常のインストールを使っているときには別の場所に保存しても構いません。 –

+0

これで、$ smtp-> send()にハングアップしていることを確認できます。 – Tom

0

IMEでは、PHPのメール機能に関する報告されたエラーの99%以上がメールやPHPのインターフェースには問題がありません。

PHPのmail()を使用するのではなく、なぜサーバーに直接接続しようとしていますか?

マシンにシェルアクセスできますか?次のように簡単にしますが、PHPからこれらを実行できます。

smtpサーバのホスト名を解決できますか?

smtpサーバーのポート25に接続できますか?

認証はどのように実装されていますか? (response to your EHLOに含める必要があります)

シェルアクセス権がある場合は、ロギングプロキシ経由で接続するか、usnig tcpdump/wiresharkを取得して、接続が滞っている場所を確認してください。

メールサーバーが適切なSMTPを実装していない可能性があり、認証が間違っている可能性があります。

関連する問題