php mail ()는 명령 줄에서 작동하지만 apache가 아닙니다.
-
13-09-2019 - |
문제
Web Browser (IE Apache)를 통해 호출 될 때 PHP의 메일 기능이 실패하는 이유를 알아 내려고하지만 사용을 사용하여 명령 줄에서 동일한 스크립트를 실행할 수 있습니다.
php -f mailtest.php
이것은 내 고객의 Fedora 서버 중 하나이므로 완전히 맥주하지는 않지만 아무것도 변경해야한다면 루트 액세스 권한이 있습니다.
php.ini에서 :
sendmail_path =/usr/sbin/sendmail -t -i
이것이 중요한지 확실하지 않지만/usr/sbin/sendmail은/etc/sbin/sendmail.sendmail로 돌아가는 Symlink입니다. FWIW Apache 사용자는 SendMail을 실행할 수있는 권한이 있습니다 (명령 줄에서 직접 테스트 된 SendMail).
OS: Fedora Core 7 Linux (kernel 2.6.23.17)
Apache: 2.2.8
PHP: 5.2.6
여기서 도움을 주시면 감사하겠습니다!
해결책
나는 문제를 발견했다. Selinux는 Apache가 Sendmail을 사용할 수없는 것을 방지했습니다. 진단하기 위해 사용했습니다
$ sestatus -b | grep sendmail
httpd_can_sendmail off
그런 다음 실제로 문제를 해결하려면 :
$ restorecon /usr/sbin/sendmail
$ setsebool -P httpd_can_sendmail 1
그것에 대해 자세히 알아보십시오 여기.
다른 팁
사용자 권한 오류입니까? 귀하의 계정과 PHP 스크립트를 실행하는 데 사용되는 계정에는 다른 권한이있을 수 있습니다.
Apache의 error_log에있는 것이 있습니까? PHP가 Apache 모듈 또는 CGI 바이너리로 실행됩니까?
편집 : 흠 ... 오류 로그에 아무것도 없습니다. 전화는 무엇을합니까? mail(...)
반품? 메일 로그에서 흥미로운 것이 있습니까? 이것은 MTA에 따라 다릅니다. 종종/var/log/maillog
편집 2 : is safe_mode
켜고 당신은 사용하고 있습니까? mail()
기능 추가 _parameters ?
이것은 StackoverFlow에 대한 나의 첫 번째 대답입니다! :영형
그래서 나는 당신과 같은 문제를 겪었습니다, Matt! 나는 OpenSuse를 사용합니다. 나는 그것을 알아 냈다 postfix check
결과적으로
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
그래서 다음 명령을 실행했습니다.
# 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}
그런 다음 브라우저에서 간단한 PHP 스크립트를 시도하여 모든 것이 잘 작동하는지 테스트했습니다.
<?php
$ret = mail('abc@gmail.com', 'subject', 'message');
if ($ret === true)
echo 'Success'.PHP_EOL;
else
echo 'Error'.PHP_EOL;
그리고 괜찮습니다! 이 방법으로 문제를 해결하시기 바랍니다.