PHP mail() fonctionne en ligne de commande, mais pas apache
Je suis à essayer de comprendre pourquoi la fonction mail en PHP échoue lorsqu'il est appelé via un navigateur web (c'est à dire à apache), mais je peux utiliser le même script à partir de la ligne de commande à l'aide de
php -f mailtest.php
C'est l'un de mes clients Fedora serveurs, donc je ne connaît pas complètement, mais j'ai accès à la racine j'ai besoin de changer quoi que ce soit.
à partir de php.ini:
sendmail_path = /usr/sbin/sendmail -t-i
Ne sais pas si cela pourrait avoir son importance, mais /usr/sbin/sendmail est un lien symbolique vers /etc/alternatives/mta, qui est un lien symbolique de retour à /usr/sbin/sendmail.sendmail. FWIW l'utilisateur apache ne l'autorisation d'exécuter sendmail (testé sendmail directement à partir de la ligne de commande).
OS: Fedora Core 7 Linux (kernel 2.6.23.17)
Apache: 2.2.8
PHP: 5.2.6
Toute l'aide ici seront grandement appréciés!
OriginalL'auteur matt | 2009-09-22
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé le problème. SELinux empêche apache d'être en mesure d'utiliser sendmail. Pour le diagnostic, j'ai utilisé
Alors pour réellement résoudre le problème:
Lire plus à ce sujet ici.
merci, vous m'a conduit dans le bon sens: j'ai eu un problème similaire, et après lecture de votre post, j'ai eu l'idée qu'il pourrait y avoir quelque chose de todo avec mon apparmor installation ... en effet, c'est le problème.
Vous devez exécuter cette commande en tant que root pour info.
dites-moi pourquoi cette fonction est désactivée par défaut??
setsebool -P httpd_can_sendmail 1
ne fonctionne pas pour moi. J'ai essayé avec-V
option, et il a travaillé comme un charme.OriginalL'auteur matt
Est-il un utilisateur des autorisations d'erreur? Votre compte et celui utilisé pour exécuter des scripts PHP peuvent avoir des privilèges différents.
OriginalL'auteur Rob Drimmie
Quoi que ce soit dans error_log d'apache? Est PHP en cours d'exécution en tant que module apache ou binaire CGI?
EDIT: Hmmm... rien dans le journal des erreurs. Quel est l'appel à
mail(...)
retour? Rien d'intéressant dans le journal de messagerie? Cela peut varier en fonction de la MTA, souvent /var/log/maillogEDIT 2: Est
safe_mode
allumé et êtes-vous à l'aide de lamail()
de la fonction de additional_parameters ?aussi, j'ai tourné sur toutes les erreurs (c'est à dire la fonction error_reporting(E_ALL); ) et je ne vois pas d'erreurs ou d'avertissements.
OriginalL'auteur Josh
C'est ma première réponse sur StackOverflow! 😮
Donc j'ai eu le même problème que vous, matt! J'utilise OpenSuse. J'ai compris que
postfix check
entraîné avecalors, j'ai couru les prochaines commandes:
et puis, j'ai essayé de simple script PHP à partir de mon navigateur pour tester si tout fonctionne bien: (en supposant que vous souhaitez mail [email protected])
et c'est très bien! J'espère que vous allez résoudre le problème avec cette méthode
OriginalL'auteur Alexandre