我收到此警告,使用 php 发送邮件警告:mail(1) [function.mail]: failed to open stream: Permission denied in /home/...
- 使用 ssmtp 和 gmail 作为 smtp
- PHP 5.3.1
- 日志中没有任何内容(没有错误)
- 邮件到达目的地
- 文件的权限是 rwxrxrx
拒绝什么?
甚至调用一些简单的东西
邮件(“mail@domain.com”,“主题”,“正文”);
我仍然收到此警告
问题是网络服务器用户无法写入和/或读取邮件日志文件。对于适当的配置:
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
如果你简化它会起作用吗?
$mail_sent = mail('address@domain.com', 'subject', 'message');
如果是这样,那么您就知道邮件有效。
在那之后,我会删除 $eol 的东西,看看是否能修复它。如果没有,那么我将删除标题块并继续删除内容,直到它开始工作。
毕竟是文件权限问题。但不是在脚本中,而是在目录中。我跑了一个chmod -R 777 *
,警告消失了。经过进一步检查,我发现了一个名为 的文件1
,该文件包含已发送邮件的日志。警告是 php 告诉我他无法打开这个文件
解决方案:
sudo chmod -R 755 *
sudo chmod 777 1
F#$%^% 神秘的 php 错误信息