1

php でメールを送信すると、この警告が表示されます Warning: mail(1) [function.mail]: failed to open stream: Permission denied in /home/...

  • ssmtp と gmail を smtp として使用する
  • PHP 5.3.1
  • ログには何もありません (エラーなし)
  • メールが宛先に届く
  • ファイルのパーミッションは rwxrxrx です

許可が拒否されたのは何ですか?

次のような単純なものを呼び出しても

mail("mail@domain.com", "件名", "本文");

私はまだこの警告を受けています

4

3 に答える 3

10

問題は、Web サーバーのユーザーがメール ログ ファイルを読み書きできないことです。適切な構成の場合:

1) 電子メール ログ用のフォルダとファイルを作成します。例えば:

touch /var/log/php5/mail.log

2) php.ini でログ ファイルを設定します。

mail.log = /var/log/php5/mail.log

3) 必要に応じて、そのフォルダー/ファイルの所有者とグループを設定します。

所有者とグループを確認してください

ls -la /var/log/php5

必要に応じて、グループを変更します (Web サーバーのグループが何であれ、www-data を変更します)。

sudo chgrp -R www-data /var/log/php5

必要に応じて、所有者を変更します (Web サーバーのユーザーが何であれ、www-data を変更します)。

sudo chown -R www-data /var/log/php5
于 2011-12-19T16:10:09.263 に答える
0

単純化すれば機能しますか?

 $mail_sent = mail('address@domain.com', 'subject', 'message');

もしそうなら、あなたはメールが機能することを知っています。

その後、$ eolのものを削除して、それで修正されるかどうかを確認します。そうでない場合は、ヘッダーブロックを削除し、機能し始めるまで削除を続けます。

于 2009-12-16T18:18:01.610 に答える
0

結局、ファイルのアクセス許可の問題であることが判明しました。ただし、スクリプトではなく、ディレクトリ内です。を実行したchmod -R 777 *ところ、警告が消えました。さらに調べてみると1、 というファイルが見つかりました。このファイルには、送信されたメールのログが含まれていました。警告はphpで、彼はこのファイルを開くことができなかったことを教えてくれました

解決:

 sudo chmod -R 755 *
 sudo chmod  777 1

F#$%^% 不可解な php エラー メッセージ

于 2009-12-18T07:30:48.793 に答える