Votre question

Envoyer un email en php

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
19 Novembre 2007 01:18:39

Salut tout le monde,

J'arrive à envoyer un email avec un script php seulement quand j'exécute le script dans mon terminal sur une ligne de commande.

Par contre, l'émail n'est pas envoyé quand j'éxecute le script via une interface web.

J'ai même donné au groupe "Autres" tous les droits sur mon script php (Solution temporaire) .

Est-ce qu'il faut changer les droits ailleurs pour qu'un utilisateur de mon site puisse envoyer un email?

Merci

Autres pages sur : envoyer email php

19 Novembre 2007 11:27:10

salut, t'es sur quel os?
tu utilises la fonction mail?
19 Novembre 2007 11:50:57

J'ai rien compris... tu parles de PHP puis de script dans une ligne de commande ???
Contenus similaires
19 Novembre 2007 13:44:24

Darit a dit :
J'ai rien compris... tu parles de PHP puis de script dans une ligne de commande ???


Et alors ?

Tu peux très bien exécuter du php en ligne de commande...

Et à mon avis il est sous Linux (99% de chances) ....

Ton cas est vraiment byzarre.... Le code php est bien interprété ?

Et le propriétaire de ton script php c'est le meme que celui d'apache ?
19 Novembre 2007 18:07:06

Pour commencer, j'utilise la fonction mail.

Kymic a dit :

Tu peux très bien exécuter du php en ligne de commande...



Effectivement, il suffit juste te taper: php monscript.php

Kymic a dit :

Et à mon avis il est sous Linux (99% de chances) ....


Encore exact :)  je suis sous fedora core 6.

Kymic a dit :

Ton cas est vraiment byzarre.... Le code php est bien interprété ?



Moi aussi je trouve ca bizzarre. Oui mon code est bien interprété, puisque lorsque je lance mon script sur une ligne de commande (En root) il n ya aucun message d'erreur et l'émail est bien envoyé.

Kymic a dit :

Et le propriétaire de ton script php c'est le meme que celui d'apache ?


Oui, puisque quand je lance mon script via l'interface web, le code est
exécuter en lecture. J'ai mis les droits nécessaires pour le groupe "Autres" qui se trouve dans linux.
Le groupe "Autres", est un groupe d'utilisateurs qui peux lire et exécuter un script php depuis mon serveur.
19 Novembre 2007 18:43:34

que te disent les logs du serveur mail (/var/log/maillog)?
tu as un retour de mail dans le compte du serveur apache?
19 Novembre 2007 23:23:02

coca25 a dit :
que te disent les logs du serveur mail (/var/log/maillog)?
tu as un retour de mail dans le compte du serveur apache?


J'ai consulté le maillog, mais il était rempli bien comme il faut, donc je l'ai
supprimé et j'ai crée un autre pour voir facilement ce qui se passe.

Mais une fois que j'envoie un nouvel email en éxécutant mon script en root, il n'ya plus rien qui s'écrit dans mon fichier maillog, alors que les droits "read / Write" sont autorisé pour root .


Comme alternative, j'ai ajouté une nouvelle condition dans mon script php, pour voir ce qui se passe:

  1. $to = 'monemail@hotmail.com';
  2. $subject='test';
  3. $message='Ceci est pour faire un test';
  4. $headers='From: monemail@hotmail.com' . "\r\n" .
  5. 'Reply-To : monemail@hotmail.com' . "r\n".
  6. 'X-Mailer : PHP/' . phpversion();
  7.  
  8. if (mail ($to,$subject,$message,$headers)) {
  9.  
  10. echo 'email envoyé avec succées';
  11.  
  12. }
  13.  
  14. else {
  15.  
  16. echo 'Echec, email non envoyé';
  17. }


Lorsque j'execute le script en root, j'ai le message "email envoyé avec succées". Par contre quand j' exécute le même script via l'interface web, j'ai le message 'Echec, email non envoyé'. alors que comme j'ai mentionné, le groupe "Autres", peut lire et exécuter mon script.
19 Novembre 2007 23:54:12

Tu n'as pas répondu à ma question sur le propriétaire....
Tu ne parles que des droits de ton fichiers là.

Regarde le propriétaire d'apache dans le fichier de conf. et celui de ton fichier php.
20 Novembre 2007 00:02:36

les permissions (en tout cas celles du script) n'ont rien à voir avec l'envoi du mail, elles controlent juste si le script s'execute ou pas.
par contre, pour le maillog, c'est pas normal d'avoir un fichier vide!

faut que tu remettes en fonction les log, tu auras la réponse dans les log
20 Novembre 2007 02:27:12

Kymic a dit :
Tu n'as pas répondu à ma question sur le propriétaire....
Tu ne parles que des droits de ton fichiers là.

Regarde le propriétaire d'apache dans le fichier de conf. et celui de ton fichier php.


Désolé, j'avais mal compris.

Ce que je vois sur mon httpd.conf c'est "ServerAdmin root@localhost", apparement c'est juste root qui à les droits sur apache, à moins qu'il yai une autre ligne que j'ignore et qui m'informe sur les propriétaires de apache !!.

Pour le propriétaire de mon fichier.php c'étais Root et je l'ai changé pour apache, mais ca n'a rien changer, l'émail n'est toujours pas envoyé.

Voici ce que j'ai dans mes permissions présentement:

Owner:Apache
Access: Read and write

Group:root
Access: Read-Only

Others.......
Access:Read-Only

SELinuxContext : Read from all httpd scripts and the daemon


J'espère que j'ai répondu à tes questions maintenant.



20 Novembre 2007 02:37:40

coca25 a dit :

faut que tu remettes en fonction les log, tu auras la réponse dans les log


Comment je pourrais faire ca, normalement les fichiers de log se crée automatiquement , non !!

J'ai 4 fichiers de log (maillog (que je viens de créer), maillog.1, maillog.2,maillog.3). Seule le fichier maillog me donnait les dernières mise à jour. J'ai crée un autre avec le même nom, mais rien ne s'écrit endans.
20 Novembre 2007 09:19:39

ServerAdmin n'indique pas du tout le propriétaire d'apache......

Regarde

User .....
Group .....


Et mets le meme user et le meme groupe sur ton fichier (chown et chgrp)

Et pour les logs vérifie bien que le chemin est bon toujours dans httpd.conf ..... ErrorLogs et AccessLog

24 Novembre 2007 05:06:31

Kymic a dit :
ServerAdmin n'indique pas du tout le propriétaire d'apache......

Regarde

User .....
Group .....


Et mets le meme user et le meme groupe sur ton fichier (chown et chgrp)

Et pour les logs vérifie bien que le chemin est bon toujours dans httpd.conf ..... ErrorLogs et AccessLog



Kymic a dit :
ServerAdmin n'indique pas du tout le propriétaire d'apache......

Regarde

User .....
Group .....




Voici ce que j'ai dans mon fichier httpd.conf:

User apache
Group apache

J'ai exécuté les 2 commandes suivantes:

chmod apache monscript.php
chgrp apache monscript.php

Pour m'assurer que les droits sont bien accordés, j'ai fait un "ll -a" ,
et j'ai bien apache apache monscript.php

Kymic a dit :

Et pour les logs vérifie bien que le chemin est bon toujours dans httpd.conf ..... ErrorLogs et AccessLog


Pour les logs ca fonctionne maintenant, il suffisait juste d'un redemarrage du sytème car un redémarrage de services n'était pas assez, je sais que ce n'est pas une bonne idée, mais la prochaine fois ca m'apprendra à supprimer des fichiers de logs
:non: 

Du côté des logs du mail j'ai aucun message d'erreur. En fait aucune erreur n'est mentionné dans le fichier
"mailog" .Quand un email ne s'envoie pas par l'interface web, j'ai le message "Echec, email non envoyé" que j'ai écris moi-même "Voir mon post en haut"mais aucun message d'erreur dans maillog, malgré que l'émail ne s'envoie pas . Seules des lignes s'ajoutent quand un email est envoyé avec succées:

maillog de postfix:


Nov 20 14:06:06 Linux-1 postfix/postfix-script: starting the Postfix mail system
Nov 20 14:06:06 Linux-1 postfix/master[1892]: daemon started -- version 2.3.3, configuration /etc/postfix
Nov 20 14:24:08 Linux-1 postfix/pickup[1902]: 31C4B1BF537: uid=0 from=<root>
Nov 20 14:24:08 Linux-1 postfix/cleanup[2607]: 31C4B1BF537: message-id=<20071120192408.31C4B1BF537@Linux-1.localdomain>
Nov 20 14:24:08 Linux-1 postfix/qmgr[1903]: 31C4B1BF537: from=<root@Linux-1.localdomain>, size=378, nrcpt=1 (queue active)
Nov 20 14:24:09 Linux-1 postfix/smtp[2609]: 31C4B1BF537: to=<stef_yolan_81@hotmail.com>, relay=monfai.fr[64.66.220.46]:25, delay=1.5, delays=0.39/0.07/0.81/0.2, dsn=2.0.0, status=sent (250 ok: Message 164256928 accepted)
Nov 20 14:24:09 Linux-1 postfix/qmgr[1903]: 31C4B1BF537: removed



error_log de httpd: Aucune erreur en rapport avec l'envoie du mail,


24 Novembre 2007 12:26:33

tu as regardé dans spam sur hotmail?
sinon, mets une adresse d'expediteur valide pour avoir un retour s'il y a une erreur.
24 Novembre 2007 19:10:50

coca25 a dit :
tu as regardé dans spam sur hotmail?
sinon, mets une adresse d'expediteur valide pour avoir un retour s'il y a une erreur.



Comme j'ai déjà mentionné, je recois l'émail quand j'exécute mon script en ligne de commande, donc l'émail et vailde et ne se trouve pas dans le spam de hotmail car je le recois bien dans ma boite hotmail. Mais quand je l'exécute par l'interface web, ca ne fonctionne pas (rien n'est envoyé)
24 Novembre 2007 19:36:28

au fait, tu as quelle distribution?
fait un
which sendmail
, s'il est contenu dans un rep "sbin", il se peut qu'apache ne l'ait pas dans son path, rajoute le dans le php.ini, par exemple:
sendmail_path=/usr/sbin/sendmail -t -i

24 Novembre 2007 19:39:02

Tu n'as pas plusieurs version de php d'installer sur ta machine ?

Genre apache n'utilise pas la meme version que celle que tu utilise en ligne de commande ?

J'essaye de trouves des pistes ... Et peut etre je me trompes mais il me semble que la fonction mail se suffit à elle meme (quasi sur) donc postfix n'a rien a voir.....

Sinon essaye ton script sur un autre serveur... Au moins on sera fixé sur l'origine du problème
25 Novembre 2007 02:35:19

Ok daccord ;) 

Mais je ne penses pas que ca viennent de ça vu que ça marche en ligne de commande...

A moins que comme je l'ai dit plus haut il y a deux version de php d'installé et qu'apache utilise la mauvaise....Ce qui expliquerait le problème
25 Novembre 2007 03:08:02

coca25 a dit :
au fait, tu as quelle distribution?
fait un
which sendmail
, s'il est contenu dans un rep "sbin", il se peut qu'apache ne l'ait pas dans son path, rajoute le dans le php.ini, par exemple:
sendmail_path=/usr/sbin/sendmail -t -i


J'ai postfix d'installé, j'ai désinstallé complétement sendmail pour éviter tout problème.

En ce qui concerne le "php.ini".

J'ai enlevé le ";" qui était au début de cette ligne:

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

Dois-je changer par postfix pour que ca marche ?

j'ai aussi fait:
sendmail_path=/usr/sbin/postfix -t -i

mais ca ne fonctionne pas aussi
25 Novembre 2007 03:11:03

Kymic a dit :
Ok daccord ;) 

A moins que comme je l'ai dit plus haut il y a deux version de php d'installé et qu'apache utilise la mauvaise....Ce qui expliquerait le problème


C'est normal que j'ai deux versions de php d'installé ??, normalement quand une nouvelle version de php s'installe, l'ancienne version se désinstalle.

Mais bon, j'ai fait un "rpm -q php" :

php-5.1.6-3
25 Novembre 2007 03:18:47

sendmail (la commande) est aussi fournie par postfix
une fois la directive sendmail_path modifiée et apache redémarré, il n'y a rien de nouveau dans les logs?
25 Novembre 2007 11:31:03

Je ne sais pas si tu as deux versions de php ... C'était une question !

Quand tu fais des modifs sur tes fichiers de config penses bien a redémarrer apache !
28 Novembre 2007 02:59:27

coca25 a dit :
sendmail (la commande) est aussi fournie par postfix
une fois la directive sendmail_path modifiée et apache redémarré, il n'y a rien de nouveau dans les logs?


une fois que j'ai enlevé la ";" devant "sendmail_path=/usr/sbin/sendmail -t -i " j'ai redémarré apache et postfix.

Toujours le même problème, l'émail s'envoie en ligne de commande quand je suis en root, mais pas par l'interface web.

J'ai regardé mes fichiers de log, mais il n'ya pas d'erreurs mentionnées concernant les mails.

Si je récapitule les modifs fait jusqu'à date.

Dans mon fichier httpd.conf:

User apache
Group apache

Dans php.ini
sendmail_path=/usr/sbin/sendmail -t -i


j'ai changé les droits pour le fichier qui contient la fonction mail:

chown apache envoiemail.php
chgrp apache envoiemail.php


J'ai redémarré mes 2 services : httpd, postfix

J'ai la version php : 5.1.6-3
28 Novembre 2007 03:00:22

Pas de solution pour mon problème !!
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS