2011-07-06 22 views
6

UbuntuにPHPとApacheでsendmailをインストールしました。次のコマンドラインを試すと、PHP sendmailはUbuntuコマンドラインで動作しますが、PHPファイルでは動作しません

php -r "mail('[email protected]', 'test', 'test')"' 

が正常に送信されます。

しかし、でファイル "test_send_mail.php" を実行している:

<?php 
mail('[email protected]', 'test', 'test') 
?> 

して電子メールを送信しません。

の.phpファイルで失敗した試行がログエントリを生成します。

`Jul 5 21:24:47 www sendmail[25603]: p661OlL7025603: from=www-data, size=106, class=0, 

nrcpts = 0、MSGID = < [email protected]>、リレー= WWWデータの@ localhostの

コマンドラインで成功しようとすると、ログエントリを生成します。

Jul 5 21:22:40 www sm-mta[25533]: p661MevV025533: from=<[email protected]>, 
size=352, class=0, nrcpts=1, msgid=<201107060122.p6[email protected]>, 
proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 

誰もが何が起こっている可能性のあるアイデアを持っていますか?ご協力ありがとうございました!

+1

PHP 'メール()'関数は実際にはかなり限られており、風変わりです。あなたのウェブサイトへの、またはあなたのウェブサイトのユーザのために電子メールを送るつもりなら、PHPMailerのような適切なライブラリを使用するべきです。これにより、添付ファイルの取り扱いやヘッダーのサポートが向上します。 – staticsan

+0

さあ、メールは添付ファイルなどを含む何でも送ることができます。 電子メールを送信するためのトランスポートについてもっと知っています。 PHPMailerの場合はほとんどがSMTPを使用し、メール機能はlinux sendmail programmを使用します。そして、rootユーザーのために設定されているようですが、www-dataでは設定されていないようです –

答えて

1

PHPは別の環境に応じてiniファイル持っている:

  • CLI/php.iniの
  • CGI/php.iniの
  • php.iniの

はあなたが作った作りますすべてのファイルの適切な変更は、通常NginxとLighttpdではcgiが使用されますが、確実にすべての設定を複製します。

また、phpinfo();関数を実行すると、実際にどの設定が使用されているかを確認することができます。

も、これは直接修正することがあります。PHP mail issue with www-data

0

あなたの失敗した試みは、Webサーバーのユーザーとして電子メールを送信しています。あなたはおそらくそれをしたくありません。重要な点はmail()に多くのパラメータを渡して、電子メールをインジェクタに渡すときにこれらの種類のデフォルトを無効にすることです。

マニュアルページのコメントをmail()にしてください。そうすることには多大な助けがあります。