1

我收到此警告,使用 php 发送邮件警告:mail(1) [function.mail]: failed to open stream: Permission denied in /home/...

  • 使用 ssmtp 和 gmail 作为 smtp
  • PHP 5.3.1
  • 日志中没有任何内容(没有错误)
  • 邮件到达目的地
  • 文件的权限是 rwxrxrx

拒绝什么?

甚至调用一些简单的东西

邮件(“mail@domain.com”,“主题”,“正文”);

我仍然收到此警告

4

3 回答 3

10

问题是网络服务器用户无法写入和/或读取邮件日志文件。对于适当的配置:

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

如果需要,更改所有者(更改您的网络服务器用户的 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 回答