【问题标题】:PHP can send email from command line but not browserPHP可以从命令行发送电子邮件但不能从浏览器发送
【发布时间】:2016-05-30 04:09:53
【问题描述】:

我在homepage 处设置了一个表单。当有人提交表单时,它会将他们重定向到向我发送表单的 php 脚本。唯一的问题是,当我使用浏览器时,表单不会向我发送任何内容。我有一个在同一台服务器上运行的脚本,当我从命令行执行时,它会立即发送一封电子邮件。当我转到page in a browser 时,它会给出确认消息,但不会发送任何内容。发生了什么?如果有帮助,PHP 正在使用 MSMTP 发送电子邮件。我相信 apache 以 root 身份运行(我知道这很糟糕)。如何检查?

如果有人想要,这里是代码:

<?php 
    ini_set( 'display_errors', 1 );
    error_reporting( E_ALL );
    $from = "mailbot@prototypexenon.tech";
    $to = "<MYEMAIL>";
    $subject = "PHP Mail Test script";
    $message = "This is a test to check the PHP Mail functionality";
    $headers = "From:" . $from;
    mail($to,$subject,$message, $headers);
    echo "Test email sent";
?>

编辑:显然 new-server-owner 足够聪明,不会让 apache 以 root 身份运行。现在都修好了。谢谢@EdHeal

【问题讨论】:

  • 检查你的 PHP 错误日志,我想你会明白原因的。
  • 能否提供代码sn-p?
  • @PrototypeXenon - 作为对问题的编辑会更好。运行脚本的用户也会影响权限
  • @EdHeal 现在知道了。

标签: php


【解决方案1】:

通过命令行运行的 PHP 和通过 Web 服务器运行的 PHP 可以使用完全不同的 php.ini 文件。运行 phpinfo() 并查看每种情况下使用的是哪个 php.ini 文件。可能其中一个没有正确配置 SMTP。

【讨论】:

  • 找到 php.ini 或搜索 php.ini 如果你在 Windows 我得到这个 /etc/php/7.0/cli/php.ini /etc/php/7.0/fpm/php.ini因为我使用的是 php-fpm,但是命令行和浏览器的 ini 通常是不同的
  • @smugford 它在 Ubuntu 上运行。我是 100% 我正在编辑正确的文件。
【解决方案2】:

显然 new-server-owner 足够聪明,不会让 apache 以 root 身份运行。现在都修好了。谢谢@EdHeal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2010-09-07
    • 2011-10-13
    • 2014-05-23
    相关资源
    最近更新 更多