2009-12-31 38 views
1

在我的PHP程序中,我遇到了mail()函數的問題。PHP郵件()在數據庫連接後失敗

我可以把它在我的腳本的任何地方,直到這條線:

$this->db_conn = mysqli_connect($this->db_host, $this->db_user, $this->db_pass); 

如果我把電話給郵件功能之前,立即郵件()成功返回true。如果我把mail()放在這行後面,mail()失敗並返回false。

爲什麼會發生這種情況?

編輯:我的腳本的其餘部分在mail()調用後正常繼續。這直到最近才成爲問題。是否有一些PHP/Apache設置可能已被更改?

EDIT2:以前沒注意到它,但的確顯示了一個警告:

PHP Warning: mail() [<a href='function.mail'>function.mail</a>]: Could not execute mail delivery program '/usr/lib/sendmail -t -i' 

什麼能mysqli_connect()做以防止郵件程序正常運行?

EDIT3:這是服務器運行Solaris與Apache Web服務器。目前,我已經將PHPMailer轉換爲使用SMTP模式工作正常。儘管如此,仍然試圖弄清楚郵件()發生了什麼問題。

+0

你有沒有檢查你的日誌? – Sampson 2009-12-31 00:44:23

+0

對不起,我含糊不清的代詞 - 正如我在上面解決的,它是失敗的「mail()」函數;數據庫連接看起來很好。 – Wickethewok 2009-12-31 00:51:10

+0

這是什麼類型的服務器? – Sampson 2009-12-31 01:06:10

回答

1

Web服務器可能用盡了可用的文件描述符,或者達到其文件描述符限制。

+0

我不完全確定,但我很確定這是問題所在。 – Wickethewok 2010-03-23 16:25:43

0

檢查您的日誌,看它是否報告mail()或數據庫調用失敗的任何原因。

1

問題幾乎可以肯定是數據庫連接 - 檢查連接字符串是否正常工作,並可能在你的mail()調用之前的以下行中輸出一些內容(對這些數據庫變量的一些跟蹤數據將是明顯的選擇)檢查發生了什麼以及是否正常工作。

數據庫日誌可能會讓您知道您是否遇到憑據問題。