PHP mail()错误500

时间:2012-03-11 20:51:08

标签: php email

作为网站注册过程的一部分,我添加了邮件确认。但由于某种原因,邮件功能会在那里引发内部服务器错误。

奇怪的是,如果我创建一个测试脚本,使用完全相同的电子邮件(所有相同的参数),它可以正常工作,并发送电子邮件。

邮件是从Class中的函数发送的,如果有帮助的话。我没有发布代码,因为它并不真正相关,即使我尝试mail('email@email.com','subject','email');它失败并出现500错误!

服务器错误日志根本没有显示任何内容,有人知道可能导致此类问题的原因吗?

技术:

服务器正在通过mod_fastcgi运行php,但如果切换到mod_suphp也会出现此问题。

更新

更新: 我将尝试更好地解释这一点,如果从另一个文件调用,使用相同的参数,邮件功能将完美地工作。这里的问题是结合邮件功能导致错误500.其中调用它的文件的其余部分也很好,如果我评论邮件功能一切正常。它被调用的方式是对一个文件的AJAX请求,该文件调用发送邮件的函数(以防这有助于)

更新2: 为了回答到目前为止的答案,这里有更多我以前没有分享过的信息: 操作系统:CentOS版本5.8 当我说错误500时,我的意思是服务器只返回HTTP 500状态代码。 服务器在任何错误日志中都不显示任何内容 最重要的是,如果我创建一个名为test.php的文件,只有mail('address@domain.com','Subject','Message'),它就可以了。从其他文件调用时,返回500状态代码。 我要问的是,如果有人知道,可能是因为经验,可能会导致这种情况。

更新3: 昨天有人遇到同样的问题:PHP's mail() function causes a 500 Internal Server Error only after a certain point in the code

更新4 : 经过一些测试,我发现只有在通过AJAX调用脚本时才会返回500个统计信息代码。如果我创建一个名为test.php的文件,我只需放置邮件功能并对其进行测试即可。通过AJAX调用它不会有任何想法吗?

3 个答案:

答案 0 :(得分:1)

你的问题很困惑。

您没有说明您正在运行的操作系统,也没有提供配置的详细信息:在MSWindows上,php的邮件功能充当SMTP客户端。在POSIX OS(包括Linux)上,它执行命令程序来发送电子邮件。 SMTP客户端需要知道要连接的服务器和端口。 POSIX函数需要配置来告诉它运行哪个程序。

您一直在引用500错误 - 您是指浏览器中的HTTP 500状态代码吗?

邮件程序/服务器的日志显示了什么?如果这是posix平台,请尝试更改php.ini以运行shell脚本来记录操作和参数。

答案 1 :(得分:1)

根据您提供的输入量,很难说出错误是怎么发生的。

错误:500是间隔服务器错误,可能有多个原因发生。

  • 格式错误的php cgi脚本
  • .htaccess或其他配置文件中的无效指令
  • 文件系统和服务器软件施加的限制。    可能是您要附上要发送的文件
  • 标题中缺少换行符(\ r \ n)

尝试从此cPanel Forums

列出的每个解决方案

答案 2 :(得分:0)

经过几个小时的测试后,我发现了问题! 在AJAX调用完成后,我使用window.location将用户重定向到新页面,在它的回调函数中。

显然,如果在AJAX调用使用mail()函数的php脚本后修改它,服务器会在请求中返回500状态代码