2010-03-11 77 views
7

我有一个即时通讯使用的测试PHP邮件()一个小脚本,如下:PHP不显示错误

<?php 
error_reporting(E_ALL); 
ini_set("display_errors",1); 

mail('[email protected]','test','test') or die('could not send') ; 

echo "Mail Sent"; 

?> 

当我运行该脚本,我得到任何输出。我没有收到任何错误,我没有收到任何回应,我查看了源文件,没有任何内容。

我试过这么多不同的变体,如果我在上面的代码中取出邮件函数,它会正常工作。

这是一个Windows托管服务器,所以我没有访问为php.ini或任何

难道是一些配置,是造成无输出,当它遇到一个错误?

+0

PS我知道,mail()函数可能会错误,如果sendmail_from没有设置或没有在头部给出我只是想明白为什么错误不会输出 – Tim 2010-03-11 00:52:29

+0

那么,你的'邮件'调用包含语法错误('''测试,'应该有一个额外的撇号)。这可能是程序死亡的原因......但PHP应该告诉你,这可能是这个问题的关键。 – cmptrgeekken 2010-03-11 01:00:55

回答

17

按照PHP Runtime Configuration指南:

注:虽然display_errors可能 在运行时设置(与ini_set()),它 将不会有任何影响,如果脚本 有致命错误。这是因为 所需的运行时操作未获得执行 。

您的代码似乎有语法错误('test,缺少闭合撇号)。因此,您的程序遇到致命错误。 只有方式才能显示致命错误(编辑:在错误日志之外)是在您的php.ini文件中设置display_errors = 1

1

问题在于您的sendmail服务器配置。如果您在个人开发环境中测试此脚本,请不要担心。它可以成为设置/配置sendmail服务器的皮塔。如果你在生产服务器上遇到这个问题,最简单的解决方案是使用一个邮件程序库,它有一个smtp选项(允许你的电子邮件发送到外部smtp服务器进行处理/交付)。

下面是使用第三方SMTP邮件脚本指导... http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm