dev*_*lis 11 php linux apache sendmail centos
我有一个运行Apache 2.2和PHP 5.3的CentOS 6.2虚拟机,我试图通过PHP的mail()函数发送电子邮件.我可以毫无问题地从CLI发送电子邮件,但是当PHP尝试失败时.在sendmail日志中有以下内容:
Oct 9 11:42:03 localhost sendmail[3080]: NOQUEUE: SYSERR(apache): can not chdir(/var/spool/clientmqueue/): Permission denied
Run Code Online (Sandbox Code Playgroud)
似乎Apache没有权限这样做,但我不知道如何解决它.我已经找到了很多关于这个的讨论,但没有具体到我正在做的事情,我可以使用.任何帮助,将不胜感激.谢谢!
Flo*_*ima 31
Selinux可能导致问题,验证运行:
getsebool -a | grep mail
Run Code Online (Sandbox Code Playgroud)
如果它显示为低于selinux:
allow_postfix_local_write_mail_spool --> off
Run Code Online (Sandbox Code Playgroud)
您可以禁用它,但如果您想保留它(并且您应该提供额外的安全层),您应该执行其他操作:
setsebool -P httpd_can_sendmail on
Run Code Online (Sandbox Code Playgroud)
这将允许httpd发送电子邮件,就像使用php mail()时一样.
jma*_*ate 12
讨厌这个,但这里没有一个解决方案适合我.我对SELinux知之甚少,但我最终发现了这个问题(在CentOS 6上):
getsebool httpd_can_sendmail
Run Code Online (Sandbox Code Playgroud)
哪个告诉我它被禁用了.固定的
setsebool httpd_can_sendmail 1
Run Code Online (Sandbox Code Playgroud)
首先你必须检查权限是否正确。这是我的系统中的以下权限
# ls -l /usr/sbin/sendmail.sendmail
-r-xr-sr-x root smmsp /usr/sbin/sendmail.sendmail
# ls -l /var/spool/clientmqueue
drwxrwx--- smmsp smmsp /var/spool/clientmqueue
如果您的权限或所有权错误,请使用 chown 和 chmod 进行更改。
如果上述正确,则禁用 selinux,或者如果您希望启用 selinux,请使用 chcon 设置正确的 selinux 上下文。
如需暂时禁用selinux,请使用#setenforce 0
| 归档时间: |
|
| 查看次数: |
33601 次 |
| 最近记录: |