Envoi de mail

Petit nouveau ! | 7 Messages

30 mai 2011, 09:39

Bonjour,

Voici mon problème :

Je n'arrive pas à envoyer un mail via une page PhP de mon site.
Je n'ai aucun message d'erreur.
Par contre, j'arrive à envoyer un mail en ligne de commande avec un script PhP qui reprend la totalité des lignes d'envoi du mail de ma page PhP.
Je n'arrive pas non plus à faire exécuter une commande "externe" (style "ls") via la page PhP mais en ligne de commande ça matche.

Informations :

- hébergement sur linux ;
- réseau professionnel (mail() fonctionnel) ;
- PhP v5
- PhP et Apache non installés par mes soins

Merci pour votre aide, je suis coincé et je n'arrive pas à comprendre. Un soucis de droits quelconques ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 mai 2011, 20:40

salut,

sans code on ne peux rien faire ;)

en dehors de cela si c'est possible en ligne de commande y a pas de raison que cela ne le soit pas dans un fichier (sauf si tu n'utilise pas le même php.ini et que mail et désactivé / pas configuré dans l'un d'eux).

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 3607 Messages

01 juin 2011, 22:00

Bonsoir,

La première chose à faire, c'est d'essayer d'accéder aux logs d'erreurs apache/php ils devraient pouvoir t'aider normalement,
Pense également à régler le niveau d'erreur afin que certaines ne soient pas masquées.

Petit nouveau ! | 7 Messages

14 juin 2011, 09:24

Voici le code utilisé (simple) :

<?php

$Destinataire = "user@société.com";
$Sujet = "Test mail";
$Msg_mail = "<html><body>Test d'envoi de mail.";
$Headers = 'MIME-Version: 1.0' . "\r\n";
$Headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Msg_mail = $Msg_mail."</body></html>";
mail($Destinataire,$Sujet,$Msg_mail,$Headers);

?>

Petit nouveau ! | 7 Messages

14 juin 2011, 09:56

ET.... si je tente ce qui suit, aucune action :

exec('ls /tmp');

Eléphant du PHP | 209 Messages

14 juin 2011, 10:04

2 pistes :
1 - Est-ce que tu as regardé dans les logs de postfix/sendmail ? (/var/log/mail.log) afin de vérifier que le serveur de mail a accepté de remettre le mail.

2 - Est-ce que tu as essayé d'exécuter ton script en tant qu'utilisateur Apache (www-data) ?
--
Eric

Petit nouveau ! | 7 Messages

14 juin 2011, 10:38

Je suis sur une piste.....

Lorsque j'envoi le mail en utilisant le code via une page, j'ai à priori un problème de droit d'envoyer un mail de la part du user [email protected].
Lorsque j'envoi le mail en utilisant le code en ligne de commande, en tant que root donc, je reçois le mail et dans les logs tout est OK...
J'ai informé l'ingé système qui s'occupe de cette machine....

Petit nouveau ! | 7 Messages

14 juin 2011, 10:52

Par contre, ce que je trouve étrange quand même, c'est que je ne peux exécuter de commandes en utilisant "exec" via une page mais que ça fonctionne sans problème en ligne de commande avec le même code......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 juin 2011, 19:01

ce n'est pas le même utilisateur qui fait "tourner" php et donc les droits changes :)

pour ce qui est du problème avec apache il faut ajouter l'utilisateur apache au groupe ayant le droit d'envoyer des mails et configurer le php.ini dans ce sens :)


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 7 Messages

15 juin 2011, 10:16

ce n'est pas le même utilisateur qui fait "tourner" php et donc les droits changes :)

pour ce qui est du problème avec apache il faut ajouter l'utilisateur apache au groupe ayant le droit d'envoyer des mails et configurer le php.ini dans ce sens :)


@+
C'est à dire ???

ViPHP
ViPHP | 3607 Messages

15 juin 2011, 10:28

En général, il y a deux configuration distinctes entre php via apache et php en ligne de commande...
Tu as souvent deux php.ini différents, et donc deux comportements différents.

Petit nouveau ! | 7 Messages

15 juin 2011, 10:39

OK...
Mais pour ce qui est de l'utilisateur apache à placer dans le groupe d'utilisateurs ayant le droit d'envoyer des mails et renseigner le php.ini de la bonne manière ??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 juin 2011, 12:08

ben ça c'est de la conf "système", dans le php.ini il y a une section [mail] permettant la conf de php.

Après pour ce qui est de l'utilisation, le problème viens du fait qu'apache utilise php, et donc c'est l'utilisateur qui a "démarré" apache qui utilise php (genre utilisateur www, wwdata etc).

quand tu une la ligne de commande c'est l'utilisateur loggué sur la ligne de commande qui utilise php et qui a le droit ou pas d'utiliser sendmail ! (si tu test aevc root c'est a peux pret normal de pouvoir le faire :mrgreen: ).

donc il faut ajouter l'utilisateur qui "démarre" apache en tant qu'utilisateur de sendmail (si c'est sendmail mais y a d'autre possibilitées)

en ligne de commande, par défaut, php n'utilise pas de php.ini, mais tu peux le forcer à en utiliser un particulier (donc le faire pointer sur le même que celui d'apache, option -f je crois a voir avec l'aide ;) )


@+
Il en faut peu pour être heureux ......