我剛剛發現這個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 時。)