2011-07-17 6 views
2

PHPスクリプトにリダイレクトされた特定の電子メールアドレスへの着信メールを取得しようとしています。私はMySqlに格納されているアドレスとドメイン情報をPostfixで使用しています。ポストフィックスエイリアスとMySQLによる配管

では/ etc /別名:

#Other aliases 
php_mail_handler: "| /usr/bin/php -q /home/mysite/htdocs/mail_handler.php" 

これがある程度動作しているようです、私は配管がMySQLのテーブルから行うことができないと信じているように、アドレスは、システムの別名を持つテーブル内ペアリングされています/var/log/mail.infoが含まれているとして、以下:

Jul 17 14:53:29 mysite postfix/qmgr[21974]: 39F726888003: from=<[email protected]>, size=1476, nrcpt=1 (queue active) 
Jul 17 14:53:30 mysite postfix/local[21981]: 39F726888003: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.95, delays=0.28/0.01/0/0.66, dsn=2.0.0, status=sent (delivered to command: /usr/bin/php -q /home/mysite/htdocs/mail_handler.php) 

しかし、PHPスクリプトは、(それがログファイルに標準入力にタイムスタンプと何かを書き込み)を実行することはありません。このスクリプトは、コマンドラインまたはapache経由で呼び出されたときに機能します。そのコードは次のとおりです:

<?php 

$f = fopen('php_handler_log.txt','a+'); 
$data = file_get_contents("php://stdin"); 
fwrite($f,date('Y-m-d h:i:s').': '.$data."\n"); 
fclose($f); 

?> 

誰もそれが動作しないかもしれない、またはそれをデバッグする方法についてのアイデアはありますか? phpエラーログにエラーが表示されないので、私はCLIのphp.iniで指定しました。

多くのおかげで、

マット

答えて

1

あなたはユーザnobodyとコマンドライン上でスクリプトを実行しようとしましたか?

su -c "/usr/bin/php -q /home/mysite/htdocs/mail_handler.php" nobody 

次に、テストを実行する際に既存のメールアドレスを使用すると、送信者のメールにエラーの一部が戻ってくる可能性があります。

+0

私は 'nobody'を使用して実行しようとしましたが、これは許可エラーのためにログファイルを開く際に失敗するため、エラーがどこにあるのかが明らかです。私のログファイルとそのディレクトリとそのディレクトリはchmod 0777です。エラーを解決するにはどうすればよいですか?ご協力いただきありがとうございます。 – matfr

+0

あなたは/ tmpにログオンしようとすることができます。作成されたファイルは、少なくともデバッグのためにそこにあるクリエイターが所有しています。本当の長期的な解決策のためには、ディレクトリと彼の両親に十分な権利(そして777でない)を持つ権利の場所を見つけなければならないでしょう(おそらく、すべての親ディレクトリにxの権利が必要です) – regilero