PHP mail()函数没有返回true或false-脚本刚好超时


PHP mail() function not returning true or false - script just times out

php邮件功能已在Centos 5.7服务器上停止工作。包含函数调用的脚本在这台服务器上一直工作到最近几天,但没有任何配置更改。。

每当我调用mail()函数时,PHP脚本就会在这一行暂停/冻结,直到达到脚本超时限制。

$msgheader  = 'MIME-Version: 1.0' . "'r'n";
$msgheader .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$msgheader .= "From: Test Name <no-reply@servername.com>'r'n";
echo "About to send mail ->";
mail ("test@servername.com", "Test Subject", "Test Body", $msg_header);
echo "Script never reaches this line!";

我已经修改了这个问题的电子邮件地址,但我知道它们不是问题所在,因为脚本之前执行正确。

我已经尝试将电子邮件地址更改为各种个人帐户(例如@yahoo.com),但仍然不起作用,所以我不认为这是由于我的用户所在组织的垃圾邮件过滤。

是什么原因导致邮件功能在脚本超时之前一直处于停滞状态,而不是在无法发送电子邮件时立即返回false?我可以查看哪些设置?

谢谢!

编辑:

  • Apache错误日志中没有错误
  • php.ini有:

    SMTP=localhost;smtp_port=25;sendmail_path=/usr/sbin/sendmail-t-i

此问题与服务器的DNS设置问题有关。

尝试后:

yum update

很明显,服务器在连接互联网时出现了问题。这解释了尝试进行出站连接以发送电子邮件时长时间超时的原因。

我不得不添加

搜索本地域

到我的/etc/resolv.conf文件中,以建立出站连接。既然我知道了这个问题,这个问题最好发布在ServerFault上。