相同的代码仅在我使用的2台服务器中的1台上有效

时间:2018-12-10 07:51:59

标签: php server

我有一个联系表。它在我使用的2台服务器中的1台上工作正常。但不是第二个。第二个是我想保留的那个。当然...怎么可能?我试图切换PHP版本,但仍然没有任何变化。目前:7.2.12

感谢帮助。

<?php
    if (isset($_POST['submit'])) {  
        $name = $_POST['name'];
        $mailFrom = $_POST['email'];
        $message = $_POST['message'];

        $mailTo="john.doe@example.com";
        $subject="Message Sent From a Pilgrim Diaries User.";
        $txt = "name: ".$name."\n"."Email: ".$mailFrom."\n"."sent the following: "."\n\n".$message;
        $headers= "From: ".$mailFrom;

        mail($mailTo, $subject, $txt, $headers);

        header("Location: index.html?Mailsend");
    }
?>

以下是我的设置的屏幕截图:

Screen capture of the server settings

1 个答案:

答案 0 :(得分:0)

让我们从头开始

首先检查sendmail是否已正确配置并正常工作,在终端上运行以下代码以直接从终端发送邮件,

echo "Mail From Terminal" | mail -s subject user@gmail.com

如果以上发送邮件,则服务器的sendmail配置正确。其他配置。 然后检查php是否正在发送邮件,请尝试从终端运行,

php -r "mail('test@gmail.com', 'Subject', 'Mail from PHP through terminal')"'

如果以上方法都能奏效,那您就很好了。 PHP能够发送邮件。否则请检查您的php.ini配置。

现在,最重要的是。必须有SELinux阻止apache才能发送邮件,请尝试从终端运行

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

现在,尝试再次运行脚本。

万一上述任何命令均以静默方式失败,请检查服务器日志并回复。