PHP mail()返回'sh:-t:command not found'

时间:2014-05-30 05:17:11

标签: php

我尝试在网站 http://www.compileonline.com/execute_php_online.php 上在线运行代码 但我不断收到错误PHP mail()返回'sh:-t:command not found'。 我真的想要一个好的Soln。 这是我的代码: -

    <?php
    $to='vbahulkar@gmail.com';
    $subject='Birthday Reminders';
    $message='
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>B'day</title>
    </head>
    <body>
    <p>Here are the birthdays upcoming in August!</p>
    <table>
    <tr>
    <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
    <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
    <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
   </table>
   </body>
   </html>
   ';
    $headers = 'MIME-Version: 1.0'."\r\n";
    $headers = 'Content-type: text/html; charset=iso-8859-1'. "\r\n";
    $headers .= 'From: Birthday Reminder<bbahulkar@gmail.com>'."\r\n";
    mail($to,$subject,$message,$headers);
    ?>

3 个答案:

答案 0 :(得分:2)

虽然OP的解决方案需要转义单引号,但这个错误信息对我来说意味着别的。

我使用的是Docker容器,基本映像没有安装sendmail。这意味着当PHP推断出sendmail命令将是&#34; -t -i&#34;,结果将是&#34; -t -i&#34;,它将解释上面的错误消息。

就我而言,解决方案是安装sendmail。在我的基于Debian的图像中,我跑了:

apt-get install -y sendmail
可能需要

sudo,具体取决于您运行的用户apt-get

您希望通过PHP测试sendmail,以确保它按预期工作。我发现this link有我需要的东西。

答案 1 :(得分:1)

B'd修复为B\'d

您忘了包含一个标题。将=修改为.=

$headers .= 'Content-type: text/html; charset=iso-8859-1'. "\r\n";

答案 2 :(得分:0)

打开php.ini文件并检查sendmail_path行

private static void printClass(String text, final Class<? extends Person> klazz) {
    System.out.printf("%s: %s%s", text, klazz, "\n");
}

但是,如果将PHP升级到最新的稳定版5或7

,则会自动解决该问题