我一直在寻找stackoverflow和许多其他网站的想法,但到目前为止没有任何工作,我需要更多的直接帮助。
我有一个专门的Ubuntu服务器(9.04 jaunty),我在那里运行几个PHP网站,使用apache2。我的问题是mail()函数已停止工作。一段时间以来我一直在使用PEAR邮件队列来处理大多数电子邮件,所以我不确定mail()何时停止工作,但我仍然需要它用于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 ,但仍然没有!
我还能尝试什么?必须有一些东西!任何人都可以帮助我吗?
答案 0 :(得分:2)
命令行和Web服务器不共享相同的php.ini!检查在命令行和服务器模块中使用的php.ini。
答案 1 :(得分:0)
还有其他一些人。
我的错误日志中有一个条目Segmentation fault
。 2天后发现了问题。我在我的debian系统上使用了Exim4,与apache2的组合给出了分段错误。我用Postfix替换了Exim4,它有效!
但是,在你的情况下,你不能运行像whoami
这样的执行官,你应该追求那条道路。
因为邮件功能最终来到os,exec命令应该可以工作!
答案 2 :(得分:0)
您可以使用phpMailer发送电子邮件,使用mail()函数抛出SMTP。 代码是here(http://phpmailer.worxware.com/) 只是一个想法
可能可以使用此extation for opencart来使用phpmailer来替换邮件功能。我没有对此进行测试,并认为它可能会给某些人一些想法。
答案 3 :(得分:0)
在我的情况下,我正在玩的Magento docker图像中使用了php-fpm
。它保持php预加载(配置)。
重新启动后,它会选择新设置:how to restart或sudo killall php-fpm
。