php mail()返回false,但不在命令行中

use*_*164 9 php apache email ubuntu

我一直在寻找stackoverflow和许多其他网站的想法,但到目前为止没有任何工作,我需要更多的直接帮助.

我有一个专门的Ubuntu服务器(9.04 jaunty),我在那里运行几个PHP网站,使用apache2.我的问题是mail()函数已停止工作.一段时间以来我一直在使用PEAR邮件队列来处理大多数电子邮件,所以我不确定邮件()何时停止工作,但我仍然需要它用于OpenCart设置,以及其他一些东西,但是mail()无论我做什么,都会保持回报.即使这个简单的代码也行不通:

<?php
mail('mail@example.com','test','test');
?>
Run Code Online (Sandbox Code Playgroud)

所以,我一直在查看php.ini中的Sendmail设置,这些设置全部检出,当我在命令行中运行它时,它运行正常并向我发送一封电子邮件:

# sendmail
mail@example.com
test message
Run Code Online (Sandbox Code Playgroud)

所以我认为可能是php本身存在问题,所以我尝试以下命令:

# php -r "mail('mail@example.com','test','test');"
Run Code Online (Sandbox Code Playgroud)

它也发送电子邮件没有任何问题!那可能是什么?我开始认为这可能是某种权限问题,也许www-data在运行脚本时遇到了一些问题.仍然不确定这一点,因为我甚至无法运行此脚本:

<?php
echo exec('whoami');
?>
Run Code Online (Sandbox Code Playgroud)

它也返回false!我运行了visudo命令并添加了以下行以防万一:

www-data ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

我已经将文件的用户和组所有者从root:root更改为www-data:www-data但仍然没有!

我还能尝试什么?必须有一些东西!谁能帮我?

Jvd*_*erg 0

几周前我也遇到了同样的问题。我试过:

还有其他一些。

我的错误日志中有一个条目说Segmentation fault。2天后发现问题。我在 debian 系统上使用 Exim4,与 apache2 组合出现分段错误。我用 Postfix 替换了 Exim4,它成功了!

然而,在你的情况下,你不能像这样运行 exec whoami,你应该追求这条路径。

因为邮件功能最终会到达操作系统,所以 exec 命令应该可以工作!