PHP的mail()不能通过Web工作,但可以从CLI工作

时间:2014-05-11 11:19:37

标签: php email postfix-mta

我有一个简单的test.php文件,上面写着:

if (mail('my-real-address@gmail.com', 'test mail', 'test mail test')){
echo 'ok';
}
else{
echo 'bad';
}

当我在CLI中使用php5 -f test.php执行此文件时,文件的输出为ok,我正确收到电子邮件,/var/log/mail.log会写入行。

但是,当我从apache2的虚拟主机(通过加载它)执行此文件时,它也会显示ok,但是没有创建日志,我也没有收到e -mail(它也不在SPAM文件夹中)。

知道我可能做错了什么吗?

我想到的一个想法是,在CLI中我将其作为用户X执行,而在虚拟主机中我相信我将其作为www-data用户执行。但是,我不知道在哪里检查postfix是否有任何此类限制。

有什么想法吗?

修改

我在CLI中将其测试为www-data,它在CLI中对此用户起作用。

sudo su www-data
php5 -f test.php

1 个答案:

答案 0 :(得分:2)

你检查过php.ini吗?

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

http://www.quackit.com/php/tutorial/php_mail_configuration.cfm