Pregunta

Estoy tratando de averiguar por qué la función de correo en PHP falla cuando se llama a través del navegador web (es decir, Apache), pero puedo ejecutar la misma secuencia de comandos desde la línea de comandos utilizando

  

php -f mailtest.php

Este es uno de los servidores de Fedora de mi cliente, por lo que no asimilo por completo, pero tengo acceso root si necesito cambiar nada.

en el php.ini:

  

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

No estoy seguro si esto podría importar, pero / usr / sbin / sendmail es un enlace simbólico a / etc / alternatives / MTA, que es un enlace de vuelta a /usr/sbin/sendmail.sendmail. Fwiw el usuario apache tiene permiso para ejecutar sendmail (Sendmail probado directamente desde la línea de comandos).

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

Cualquier ayuda aquí será muy apreciada!

¿Fue útil?

Solución

He encontrado el problema. SELinux estaba impidiendo Apache de ser capaz de utilizar Sendmail. Para diagnosticar, solía

$ sestatus -b | grep sendmail  
httpd_can_sendmail                   off

A continuación, para fijar en realidad el problema:

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

Lea más sobre esto href="http://www.linux-archive.org/fedora-selinux-support/38002-selinux-newbie.html" aquí .

Otros consejos

¿Es un error de permisos de usuario? Su cuenta y la que se utiliza para ejecutar scripts PHP puede tener diferentes privilegios.

Cualquier cosa en error_log de Apache? PHP se está ejecutando como un módulo de Apache o un binario CGI?

EDIT: Hmmm ... nada en el registro de errores. ¿Qué hace la llamada a mail(...) volver? Nada interesante en el registro electrónico? Esto variará dependiendo de la MTA, a menudo / var / log / registro de correo

EDIT 2: ¿Es safe_mode enciende y se está usando de la función mail() parametros_adicionales

?

Esta es mi primera respuesta aquí en StackOverflow! : O

Así que tenían el mismo problema que tú, Matt! Yo uso OpenSuse. Me di cuenta de que postfix check resultó 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

así que me encontré con los siguientes comandos:

# 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}

y, a continuación, traté de simple script PHP desde mi navegador para comprobar si todo funciona bien: (suponiendo que desea enviar por correo abc@gmail.com)

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

y eso está bien! Espero que solucionar el problema con este método

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top