PHP邮件()返回false,但不是在命令行

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

我有一个专用的Ubuntu服务器(9.04 jaunty),我正在运行几个PHP网站,与Apache2。 我的问题是,邮件()函数已停止工作。 一段时间以来,我一直在使用PEAR Mail Queue来处理大多数电子邮件,所以我不确定邮件()什么时候停止工作,但我仍然需要OpenCart设置,还有一些其他的东西,但是mail()无论我做什么都保持返回错误。 即使这个简单的代码不会工作:

<?php mail('mail@example.com','test','test'); ?> 

所以,我一直在寻找php.ini中的Sendmail设置,这些设置都在检查中,当我在命令行中运行它时,它可以正常工作,并向我发送一封电子邮件:

 # sendmail mail@example.com test message 

所以我认为这可能是PHP本身有问题,所以我尝试以下命令:

 # php -r "mail('mail@example.com','test','test');" 

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

 <?php echo exec('whoami'); ?> 

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

 www-data ALL=(ALL) ALL 

而且我已经将root用户和组的所有者更改为root: www-data:www-data,但仍然没有任何结果!

我还有什么可以尝试? 一定有一些东西! 谁能帮我?

命令行和网络服务器不共享相同的php.ini! 检查在命令行和服务器模块中使用哪个php.ini。

几个星期前我有同样的问题。 我试过了:

  • PHP邮件()从命令行工作,但不是阿帕奇
  • PHP“mail()”函数发送来自php5 cli的邮件,但不是当浏览器运行脚本时

还有其他一些

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

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

因为邮件功能最终到达os,exec命令应该工作!

你可以发送电子邮件使用phpMailer抛出SMTP使用你的邮件()功能。 代码在这里(http://phpmailer.worxware.com/)只是一个想&#x6CD5;

可能可以使用这个excart for opencart来使用phpmailer来替换邮件功能。 我还没有测试过,所以认为这可能会给一些人一些想法。

在我的情况下,这是在我玩的Magento泊坞窗图像中使用的php-fpm 。 它保持php预装(配置)。

重新启动后,它拿起新的设置: 如何重新启动或只是sudo killall php-fpm