2011-07-06 81 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的数据@本地

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

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

没有人有任何想法可能发生?感谢您的帮助!

+1

的PHP'邮件()'函数实际上是相当有限的和古怪。如果您打算向您的网站或用户发送电子邮件,则应使用适当的库,例如PHPMailer。这给你一些附件处理和更好的头文件支持。 – staticsan

+0

来吧,邮件可以发送任何东西,包括附件等。 还有更多关于发送电子邮件的传输。 如果PHPMailer大多使用SMTP,而邮件功能使用linux sendmail程序。它似乎是为root用户配置的,但不适用于www-data –

回答

1

PHP有独立ini文件取决于环境:

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

确保你已经所有文件中的所有适当更改,cgi通常用于Nginx和Lighttpd,但复制所有3中的设置以确保。

此外,您可以运行phpinfo();函数来查看实际正在使用的设置。

也可能是直接的解决办法:PHP mail issue with www-data

0

你不成功的尝试发送电子邮件与Web服务器的用户。你可能不想这样做。关键是将更多参数传递给mail(),以覆盖这些类型的默认值,因为它会将电子邮件传递到注入器。

请查看关于mail()的手册页的评论,这样做会有很多帮助。

相关问题