PHP sendmail在Ubuntu命令行中工作,但不是从php文件

时间:2011-07-06 02:28:01

标签: php apache ubuntu sendmail

我在Ubuntu上安装了带PHP和apache的sendmail。当我尝试以下命令行

php -r "mail('test@gmail.com', 'test', 'test')"'

它成功发送了电子邮件。

但是,使用以下命令运行文件“test_send_mail.php”

<?php
mail('test@gmail.com', 'test', 'test')
?>

不发送电子邮件。

使用.php文件尝试失败会生成日志条目:

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

nrcpts = 0,msgid =&lt; 201107060124.p661OlL7025603@www.server.com> ;, relay = www-data @ localhost

使用命令行成功尝试生成日志条目:

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

有没有人知道可能会发生什么?谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

PHP具有单独的ini文件,具体取决于环境:

  • CLI / php.ini中
  • CGI / php.ini中
  • 的php.ini

确保您已在所有文件中进行了所有适当的更改,cgi通常用于Nginx和Lighttpd,但是要复制所有3中的设置以确保。

此外,您可以运行phpinfo();功能以查看实际使用的设置。

这也可能是直接修复:PHP mail issue with www-data

答案 1 :(得分:1)

也许你的系统会阻止apache发送邮件。看到这个类似的问题:

https://stackoverflow.com/a/1467900/956397

答案 2 :(得分:0)

您尝试失败的尝试是以网络服务器的用户身份发送电子邮件。你可能不想这样做。关键是将更多参数传递给mail(),以便在将电子邮件发送到您的注入器时覆盖这些类型的默认值。

查看mail()手册页的评论,这将有很多帮助。