我在本地機器和辦公室的服務器上運行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()
向我展示了哪個配置文件被加載,並且我編輯了正確的配置文件。它正在工作!謝謝大家的幫助。
您是否正在運行其他郵件服務器,如xampp中的其中一臺機器附帶的水銀? – markus 2009-08-13 22:16:25
這仍然給我地獄....你可以參考你如何設置你的smtp設置在iis上?特別是那些你不得不使用它來運行? – CheeseConQueso 2009-08-24 19:52:00
@CheeseConQueso - 我根本沒有惹IIS。 Apache(與XAMPP一起提供)是Web服務器;它使用\ bin目錄中的php.ini文件來控制它如何運行PHP代碼。在這種情況下,配置文件必須正確指定PHP的mail()函數的設置。 – 2009-08-25 11:55:36