用于发送邮件的 PHP 脚本在通过浏览器执行时不起作用,但在从命令行执行时工作正常


PHP script for sending mail won't work when executed via browser but work fine when executed from command line

我写了一个小PHP脚本:

<?php
$phpPath = shell_exec("which php");
print "$phpPath'n";
 
$uid =  posix_getuid();
$userinfo = posix_getpwuid($uid);
print_r($userinfo );
print "'n";
    $to = "my_user_name@my_company_mail.com";
    $subject = "Test mail";
    $message = "Hello! This is a simple email message.";
    $from = "do-not-reply@akamai.com";
    $headers = "From:" . $from;
    $res = mail($to,$subject,$message,$headers);
    print_r(error_get_last());
    if($res){
    echo "Mail Sent.'n";
    }else{
    echo "Mail was'nt Sent'n";
    }
?>

让我发疯的是,当我从命令行执行此脚本时,它可以正常工作:

/usr/bin/php
Array
(
    [name] => daemon
    [passwd] => x
    [uid] => 1
    [gid] => 1
    [gecos] => daemon
    [dir] => /usr/sbin
    [shell] => /bin/sh
)
Mail Sent.

但是当我从远程浏览器执行它时,我得到了:

/usr/bin/php
Array
(
    [name] => daemon
    [passwd] => x
    [uid] => 1
    [gid] => 1
    [gecos] => daemon
    [dir] => /usr/sbin
    [shell] => /bin/sh
)
Mail was'nt Sent

知道吗?

命令行 PHP

和 PHP 不使用同一个 php.ini,请检查它们之间是否有区别。

更多关于php的信息.ini在这里

关于SO的相关问题在这里