PHP的mail()返回false,而不是在命令行(php mail() returning fal

2019-09-22 07:16发布

我一直在寻找周围计算器和其他许多网站的想法,但迄今没有奏效,我需要更直接的帮助。

我有一个专门的Ubuntu服务器(9.04轻快活泼的),我跑几个PHP的网站那里,Apache2的。 我的问题是邮件()函数已停止工作。 由于前阵子我一直在使用PEAR邮件队列对于大多数的邮件,所以我不知道什么时候邮件()停止工作,但我仍然需要它的Opencart的设置,其中一些其他的东西,但邮件()保持返回false不管我做什么。 即使这样简单的代码将无法正常工作:

<?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数据曾与运行脚本的一些问题。 仍不能确定这一点,因为我甚至无法运行此脚本:

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

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

www-data ALL=(ALL) ALL

而且我已经改变从文件的用户和组业主:根 WWW的数据:WWW的数据 ,但仍然没有!

我还可以尝试一下呢? 必须有成才! 谁能帮我?

Answer 1:

命令行和Web服务器不共享相同的php.ini! 检查其php.ini文件是在命令行和服务器模块中使用。



Answer 2:

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

  • PHP的邮件()命令行而不是Apache的作品
  • PHP“邮件()”函数从PHP5 CLI发送邮件而不是当脚本由浏览器中运行

和其他几个人。

我曾在我的错误日志说一个条目Segmentation fault 。 经过2天发现了问题。 我用我的exim4的Debian系统上,用Apache2的组合给了分段故障。 我取代的exim4与Postfix和它的工作!

然而,在你的情况,你不能运行像EXEC whoami ,你应该追求这条道路。

由于邮件功能,最终涉及到操作系统,一个exec命令应该工作!



Answer 3:

你可以使用你的邮件()函数中使用的PHPMailer掷SMTP发送电子邮件跟了出去。 该代码是在这里(http://phpmailer.worxware.com/)只是一个想法

可能可以使用此extation为Opencart的使用PHPMailer的更换邮件功能。 我没有测试过这只是所以它并认为这可能给别人的一些想法。



Answer 4:

在我的情况下,它是php-fpm在Magento搬运工像我摆弄使用。 它不停地PHP预装(含配置)。

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



文章来源: php mail() returning false, but not in command line