php mail() 不起作用

php mail() 不起作用

我剛剛發現這個mail()功能不起作用

我在Debian下,我安裝了postfix,因為一個朋友告訴我(雖然我沒有配置它)。

當我執行 phpinfo() 時,我得到:

sendmail_path   /usr/sbin/sendmail -t -i    /usr/sbin/sendmail -t -i

但在這個目錄中我沒有類似的東西sendmail

您知道我該做什麼才能讓 mail() 正常運作嗎?

謝謝

答案1

在Unix中,大多數程式都依賴MTA(訊息傳輸代理程式)來進行郵件傳輸。當程式想要發送訊息時,它會執行/usr/sbin/sendmail並在 stdin 中提供整個訊息。

Sendmail MTA 是第一個以這種方式運作的 MTA(現在仍然如此),其他 MTA 也遵循提供程序的相同慣例/usr/sbin/sendmail

[在此答案中,Sendmail 是原始 MTA,sendmail(小寫)是/usr/sbin/sendmail(目前使用的所有 MTA 附帶的)。

PHPmail()遵循 Unix 傳統,只是將訊息傳遞給sendmail可執行檔。這意味著您需要 MTA。您已經安裝了 Postfix,這很好。然而,它有一個sendmail二進位文件,所以如果您沒有它/usr/sbin/,那麼您必須在其他地方安裝它 - 也許/usr/local/sbin/如果從原始程式碼編譯?

重新安裝 Postfix 可能會解決該問題。如果沒有,請更新您的問題並提供詳細信息,例如您最初是如何安裝 Postfix 的。

如果您的sendmail位置不是/usr/sbin/,那麼您將必須編輯 PHP 的配置 -- php.ini。它通常位於/etc/php5/,Debian 有那些。 (cgi/適用於通用 CGI/FCGI、apache2/適用於 Apache PHP 模組、cli/適用於從命令列使用 PHP 時。)

相關內容