PHP mail () komut satırından çalışıyor ama apache değil

3 Cevap php

Ben aradığımda PHP posta işlevi web tarayıcısı (örneğin apache) üzerinden başarısız neden anlamaya çalışıyorum, ama ben kullanarak komut satırından aynı komut dosyası çalıştırabilirsiniz

php-f mailtest.php

Bu müvekkilimin Fedora sunuculardan biridir, bu yüzden tamamen grok yok, ama ben bir şey değiştirmeniz gereken ben root erişimi var.

php.ini den:

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

Bu önemli olabilir, emin değilim, ama / usr / sbin / sendmail bir sembolik değil back / usr / sbin / sendmail.sendmail bir sembolik / etc / alternatifler / MTA, için. FWIW apache kullanıcı (doğrudan komut satırından test Sendmail'in) sendmail çalıştırmak için izniniz yok.

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

Herhangi bir yardım büyük takdir edilecektir!

3 Cevap

Ben sorunu buldum. SELinux sendmail kullanmak mümkün olmaktan apache önlenmesi edildi. Tanı için, ben kullanılan

$ sestatus -b | grep sendmail  
httpd_can_sendmail                   off

Sonra aslında sorunu çözmek için:

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

Bu konuda daha fazla okuyun here.

Bir kullanıcı izinleri hata mı? Hesabınız ve PHP komut dosyalarını yürütmek için kullanılan bir farklı ayrıcalıklara sahip olabilir.

Apache error_log şey var mı? PHP bir apache modülü veya CGI olarak yürütülüyor?

EDIT: Hmmm ... hata günlüğüne şey. Için çağrı mail(...) Ne çıkmıyor? Posta günlüğünde ilginç bir şey? Bu, genellikle / var / log / maillog MTA bağlı olarak değişir

EDIT 2: safe_mode açık mı ve siz * mail() işlevin * eklenen_parametreler kullanıyorsunuz?