2009-08-13 9 views
3

Je cours XAMPP sur ma machine locale et sur un serveur au bureau. Les deux sont des machines Windows. Je suis en train d'écrire du code qui utilise mail() pour envoyer des emails à partir d'un formulaire. Par défaut, il utilise sendmail.exe (fourni avec XAMPP) pour envoyer l'email. Dans tous les cas, le courrier est effectivement envoyé via une troisième machine, à savoir le serveur Exchange. Depuis ma machine locale, PHP peut envoyer du courrier très bien. Sur le serveur, lors de la soumission du formulaire, j'obtiens cette erreur:Pourquoi cette erreur PHP référence-t-elle localhost?

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

... suivi de mon nom de fichier.

Je ne comprends pas pourquoi il fait référence à "localhost". N'est nulle part dans php.ini ou sendmail.ini est "localhost" utilisé - j'utilise le nom du serveur de messagerie. Les informations SMTP utilisées sur les deux machines sont les mêmes.

Pour autant que je peux dire, les deux environnements ont tout important en commun:

  • Les fichiers php.ini sont identiques
  • Les fichiers sendmail.ini sont identiques
  • Les deux machines ont la même version de XAMPP installé
  • Le même script batch se déroulera sur les deux machines et envoyer avec succès par email sendmail.exe

J'ai arrêté et démarré Apache plusieurs fois pour m'assurer qu'il utilise les fichiers de configuration mis à jour.

Lorsque j'obtiens l'erreur ci-dessus, je remarque qu'aucun fichier journal n'est produit par sendmail.exe, ce qui me fait penser qu'il n'est jamais exécuté.

Qu'est-ce qui me manque?

Résolu

Mon problème était que je pensais qu'il utilisait c:\xampp\php\php.ini, mais il a été fait en utilisant c:\xampp\apache\bin\php.ini. Cela aurait dû être évident, et j'avais précédemment édité le bon fichier sur ma machine locale, mais d'une manière ou d'une autre j'ai été confus en faisant les changements sur le serveur. L'utilisation php_info() m'a montré quel fichier de configuration a été chargé, et j'ai édité le bon. Ça marche maintenant! Merci à tous pour votre aide.

+0

êtes-vous en cours d'exécution d'un autre serveur de messagerie comme le mercure qui vient avec xampp une des machines? – markus

+0

cela me donne encore l'enfer .... pouvez-vous référencer comment vous configurez vos paramètres SMTP sur le iis? spécifiquement ceux que vous avez dû chnage pour que cela fonctionne? – CheeseConQueso

+0

@CheeseConQueso - Je n'ai pas du tout joué avec IIS. Apache (fourni avec XAMPP) est le serveur Web; il utilise le fichier php.ini dans son répertoire \ bin pour contrôler comment il exécute le code PHP. Dans ce cas, le fichier de configuration devait spécifier correctement les paramètres de la fonction mail() de PHP. –

Répondre

2

Vous devez ajouter un appel à phpinfo() dans votre page, et vérification cela:

  • Votre script PHP utilise le bon php.ini
  • Vérifiez que les paramètres SMTP ini (tels qu'ils sont affichés dans les tables phpinfo) sont corrects.
1

Essayez d'utiliser dans le code sur le serveur:

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

je devais faire cela aussi - vous devez envoyer le sendmail.ini:

Votre sendmail.ini devrait être situé dans C: \ xampp \ sendmail \ sendmail.ini.

Vous avez seulement besoin d'être préoccupé par 3 variables ici:

1.smtp_server 
2.auth_username 
3.auth_password 

Détails sont ici: Send mail and xampp

Bill H

Questions connexes