我在 LAMP(redhat 7 服务器)上使用 PHP 发送邮件时遇到问题。我已配置sendmail
,可以使用以下命令发送电子邮件:
$ sendmail [email protected] <press enter>
message body <press enter>
ctrl+d (sends message)
并且任何提及的电子邮件地址都可以成功收到该消息。
但是当我使用 PHP 脚本(在其他服务器上运行良好)时,PHP 脚本无法发送任何电子邮件。
没有错误/etc/mail/maillog/
,并且我尝试了不同的路径,php.ini
例如sendmail_path
:
/usr/sbin/sendmail -t -i
/usr/sbin/sendmail -t
/usr/sbin/sendmail
这三个人什么也没做。
许可/usr/sbin/sendmail
是666
。
任何在任何地方都能运行的 PHP 脚本,在这种新环境中都无法运行。我尝试过的其中一个脚本如下:
<?php if(mail("[email protected]","A Subject Here","Hi there,\nThis email was sent using PHP's mail function.")) print "Email successfully sent"; else print "An error occured"; ?>
请提出建议。
答案1
首先,您sendmail_path
在 php.ini 中使用的路径是错误的。我猜是缺少/
一行、输入错误或复制/粘贴失败:
它应该是这样的:
/usr/sbin/sendmail -t -I
/usr/sbin/sendmail -t
/usr/sbin/sendmail
您可以自己找出正确的路径,如果您有权访问 shell,请输入以下内容:
whereis sendmail
并且您还应该将 sendmail 的二进制文件的权限设置为755
使用chmod
,以便 php 脚本能够执行它。
为了进一步诊断,您还应该检查 Apache 错误日志(或类似位置)。您可以通过查看或虚拟主机文件/var/log/httpd/error_log
中以下参数的值来找到默认/虚拟主机的确切错误日志位置:apache.conf
.conf
ErrorLog