12

先说几个信息:

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

我已将站点超时问题隔离到 PHPmail()函数中。这是我服务器上 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几天前不小心在根目录上运行了。我已经修复了所有错误,除了这个。

4

5 回答 5

7

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

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

确保您的 cli 和 cgi 版本具有相同的电子邮件配置,并且可以正常工作。

邮件配置键为:【邮件功能】

另一种可能性是您的 Web 用户无权执行sendmail。

还要检查假脱机权限(更新)

于 2013-01-23T13:52:06.253 回答
2

不要依赖,mail()因为它不可靠并会导致类似的问题。多年来,我一直很高兴地使用phpMailer

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

一些更常见的问题:

  • FastCGI 没有使用 sendmail 的权限

  • 大附件的内存限制

于 2013-01-20T17:47:58.387 回答
0

我一直在寻找这个特定的错误,并发现它可能是由多种原因引起的。我不知道您已经尝试过什么来修复它,但这里有一些关于可能有帮助的建议:

  • 确保开始<?php和结束?>
  • 确保将文件 chmod 为 755
  • 尝试包含某种输出(例如,打印“已发送邮件”。)

关于这个主题还有另一个问题:PHP Mail Function Causes Error - 所有者表示,更改具有相同设置的服务器会导致 mail() 函数正常工作,这可能表明主机存在问题。

于 2013-01-23T00:17:26.020 回答
0

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

我会对此发表评论,但目前还不允许。

于 2013-01-25T22:57:59.167 回答
0

您在使用时遇到问题:

exec('php -r \"mail('rudolf@geardev.de', 'test', 'test');\"');
于 2013-01-27T10:54:04.377 回答