【发布时间】:2012-12-31 22:31:40
【问题描述】:
先介绍几个信息:
- Debian 挤压
- PHP 5.3.3
- 带有 mod_cgi 的 PHP
- 在这种情况下,我绝对必须使用
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。除了这个,我已经修复了所有错误。
【问题讨论】:
-
运行
phpinfo()并查看您是否激活了 sendmail 扩展。 -
检查您的
/var/log/mail.log是否有错误 -
只有在使用邮件功能时才会出现这种情况吗?
-
停止使用邮件功能。它发送的电子邮件进入收件箱的可能性很小。最好使用 SMTP 类(有几十个)通过本地 SMTP 帐户发送。这将确保这个问题消失,并且您的电子邮件有更大的交付机会。确保设置了 To 和 From 标头。
-
mod_cgi 也是一个不太好的选择。试试 suphp 或 mod_php。