PHP mail()超时

时间:2013-01-17 11:35:33

标签: php email

首先是几个信息:

  • Debian Squeeze
  • PHP 5.3.3
  • PHP with mod_cgi
  • 在这种情况下我绝对必须使用mail()。对于我已经使用SMTP邮件的所有其他项目。

我已将PHP mail()功能的站点超时问题隔离开来。这是我服务器上test.php文件中唯一的代码行:

<?php mail('rudolf@geardev.de', 'test', 'test');

这似乎无穷无尽,然后在40秒后被mod_cgi终止。命令

php -r "mail('rudolf@geardev.de', 'test', 'test');"
命令行上的

立即发送电子邮件。

请告诉我你想看哪些日志文件,Apache日志是这样的:

[Thu Jan 17 12:17:00 2013] [warn] [client 178.15.148.43] mod_fcgid: read data timeout in 40 seconds
[Thu Jan 17 12:17:00 2013] [error] [client 178.15.148.43] Premature end of script headers: test.php

我认为问题是我几天前意外地在根目录上运行了chmod -R 775。除了这个错误之外,我已经修复了所有错误。

5 个答案:

答案 0 :(得分:7)

最有可能你使用2个不同的php.ini版本。一个用于cli,一个用于cgi。我相信Debian有这个设置。

  • /etc/php5/cgi/php.ini
  • /etc/php5/cli/php.ini

确保您的cli和cgi版本具有相同的电子邮件配置,并且它将起作用。

邮件配置密钥是: [邮件功能]

另一种可能性是您的网络用户无法访问执行 sendmail。

同时检查假脱机权限(已更新)

答案 1 :(得分:1)

不要依赖mail()因为它不可靠而导致问题就像这些一样。多年来我一直很愉快地使用phpMailer

如果您坚持mail(),请检查php.ini中的设置(在http://www.quackit.com/php/tutorial/php_mail_configuration.cfm处解释)。请注意,CLI通常具有与FastCGI不同的php.ini。

一些更常见的问题:

  • FastCGI无权使用sendmail

  • 大附件的内存限制

答案 2 :(得分:0)

我一直在寻找这个特殊的错误,并发现它可能是由各种各样的事情引起的。我不知道你已经尝试做些什么来修复它,但是这里有一些关于可能有用的建议:

  • 请务必以<?php开头,以?>
  • 结尾
  • 确保将文件chmod为755
  • 尝试包含某种输出(例如,打印“Mail sent。”)

此处还有另一个关于此问题的问题:PHP Mail Function Causes Error - 所有者声称使用相同设置更改服务器会导致工作mail()函数,这可能表示主机出现问题。

答案 3 :(得分:0)

是否有可能阻止外发SMTP连接的防火墙?该服务器上还有其他可以成功发送电子邮件的东西吗?

我会将此作为评论,但暂时不允许。

答案 4 :(得分:0)

使用时遇到问题:

exec('php -r \"mail('rudolf@geardev.de', 'test', 'test');\"');