Domanda

Sto cercando di capire il motivo per cui la funzione mail di PHP non riesce quando viene chiamato tramite browser web (vale a dire apache), ma posso eseguire lo stesso script dalla riga di comando utilizzando

  

php -f mailtest.php

Questo è uno dei server Fedora del mio cliente, in modo da non Grok completamente, ma ho l'accesso come root dovrebbe ho bisogno di cambiare nulla.

da php.ini:

  

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

Non sono sicuro se questo potrebbe importa, ma / usr / sbin / sendmail è un link simbolico a / etc / alternatives / MTA, che è un link simbolico di nuovo a /usr/sbin/sendmail.sendmail. FWIW l'utente apache ha permesso di eseguire sendmail (sendmail testato direttamente dalla riga di comando).

OS: Fedora Core 7 Linux (kernel 2.6.23.17)  
Apache: 2.2.8  
PHP: 5.2.6

Qualsiasi aiuto qui sarà molto apprezzato!

È stato utile?

Soluzione

Ho trovato il problema. SELinux impediva apache da essere in grado di utilizzare sendmail. Per diagnosticare, ho usato

$ sestatus -b | grep sendmail  
httpd_can_sendmail                   off

Poi, per risolvere realmente il problema:

$ restorecon /usr/sbin/sendmail
$ setsebool -P httpd_can_sendmail 1

Per saperne di più su di esso href="http://www.linux-archive.org/fedora-selinux-support/38002-selinux-newbie.html" qui .

Altri suggerimenti

Si tratta di un errore di autorizzazioni utente? Il suo conto e quello utilizzato per eseguire gli script PHP possono avere diversi privilegi.

Tutto ciò in error_log del apache? È PHP eseguito come modulo di Apache o di un binario CGI?

EDIT: Hmmm ... niente nel registro degli errori. Che cosa significa la chiamata a mail(...) tornare? Qualcosa di interessante nel log di posta? Questo può variare a seconda della MTA, spesso / var / log / maillog

EDIT 2: E 'safe_mode acceso e stai usando della funzione mail() additional_parameters

?

Questa è la mia prima risposta qui su StackOverflow! : O

Così ho avuto lo stesso problema di te, Matt! Io uso OpenSuse. Ho capito che postfix check portato con

postfix/postfix-script: warning: not owned by group maildrop: /usr/sbin/postqueue
postfix/postfix-script: warning: not owned by group maildrop: /usr/sbin/postdrop
postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
postfix/postfix-script: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop

così mi sono imbattuto nei prossimi comandi:

# my postfix user is postfix and postfix group is maildrop
sudo chown 'postfix:maildrop' /usr/sbin/post{drop,queue}
sudo chmod g+s /usr/sbin/post{queue,drop}

e poi, ho cercato di semplice script PHP da mio browser per verificare se tutto funziona bene: (supponendo che si vuole spedire abc@gmail.com)

<?php
$ret = mail('abc@gmail.com', 'subject', 'message');
if ($ret === true)
  echo 'Success'.PHP_EOL;
else
  echo 'Error'.PHP_EOL;

e va bene! Spero che risolvere il problema con questo metodo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top