2010-03-11 70 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