2009-08-13 37 views
3

我在本地機器和辦公室的服務器上運行XAMPP。這兩個都是Windows機器。爲什麼這個PHP錯誤引用localhost?

我在寫一些代碼,它使用mail()從表單發送電子郵件。默認情況下,它使用sendmail.exe(隨XAMPP提供)發送電子郵件。在所有情況下,郵件實際上都是通過第三臺機器(Exchange服務器)發送的。

從我的本地機器上,PHP可以發送郵件就好了。在服務器上,在表單提交時,我得到這個錯誤:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp___port" setting in php.ini or use ini_set() in

...後面跟我的文件名。

我不明白它爲什麼引用「localhost」。在php.ini或sendmail.ini中沒有任何地方使用「localhost」 - 我使用郵件服務器的名稱。兩臺機器上使用的SMTP信息是相同的。

據我所知,在兩種環境都有了很重要的共同點:

  • 在php.ini文件相同
  • 的sendmail.ini文件相同
  • 這兩款機器有XAMPP的相同版本的安裝
  • 同樣的批處理腳本將在兩臺機器上運行,併成功地通過sendmail.exe
發送電子郵件

我已經停止並啓動了好幾次Apache,以確保它使用更新的配置文件。

當我得到上述錯誤時,我注意到sendmail.exe沒有生成日誌文件,這使得我認爲它從未運行。

我錯過了什麼?

解決

我的問題是,我以爲是使用c:\xampp\php\php.ini,但它實際上是用c:\xampp\apache\bin\php.ini。這應該是顯而易見的,而且我之前在本地機器上編輯了正確的文件,但不知何故,我在服務器上進行更改時感到困惑。

使用php_info()向我展示了哪個配置文件被加載,並且我編輯了正確的配置文件。它正在工作!謝謝大家的幫助。

+0

您是否正在運行其他郵件服務器,如xampp中的其中一臺機器附帶的水銀? – markus 2009-08-13 22:16:25

+0

這仍然給我地獄....你可以參考你如何設置你的smtp設置在iis上?特別是那些你不得不使用它來運行? – CheeseConQueso 2009-08-24 19:52:00

+0

@CheeseConQueso - 我根本沒有惹IIS。 Apache(與XAMPP一起提供)是Web服務器;它使用\ bin目錄中的php.ini文件來控制它如何運行PHP代碼。在這種情況下,配置文件必須正確指定PHP的mail()函數的設置。 – 2009-08-25 11:55:36

回答

2

你應該在你的網頁添加一個調用phpinfo(),並檢查即:

  • 你的PHP腳本使用的是正確的php.ini
  • 檢查SMTP ini設置(如phpinfo表中所示)是否正確。
1

嘗試在代碼中使用此服務器上:

ini_set("SMTP","smtp.example.com"); 
ini_set('sendmail_from', '[email protected]'); 
0

我不得不這樣做也 - 你需要發送了sendmail.ini:

你sendmail.ini應設在C:\ XAMPP \ sendmail的\ sendmail.ini。

你只需要3個變量在這裏關注:

1.smtp_server 
2.auth_username 
3.auth_password 

詳情請看這裏:Send mail and xampp

比爾^ h