首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP“php5 ()”函数从邮件cli发送邮件,但不会在浏览器运行脚本时发送邮件

问PHP“php5 ()”函数从邮件cli发送邮件,但不会在浏览器运行脚本时发送邮件
EN

Stack Overflow用户
提问于 2011-12-23 02:27:21
回答 3查看 4.5K关注 0票数 2

我在"/etc/php5/apache2/php.ini“中设置了"sendmail_path = "/usr/sbin/sendmail",并在服务器上安装了sendmail,从而将服务器配置为发送邮件。

当我通过cli从php5运行这个脚本或它的任何变体时,邮件发送得很好,但当我有一个浏览器运行它时,例如Chrome或Firefox,它每次都会失败。

代码语言:javascript
复制
<?php
 $to = "notreal@email.com";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";
 if (mail($to, $subject, $body)) {
   echo("<p>Message successfully sent!</p>");
  } else {
   echo("<p>Message delivery failed...</p>");
  }
?>

我使用"php5-cli“包作为命令行解释器。

其他依赖PHP " mail ()“函数的基于PHP的web应用程序也不会发送邮件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-23 02:43:26

Apache和CLI似乎在您的设置中使用不同的配置。

将/etc/php5/cli/php.ini中的配置与您的Apache的php.ini进行比较。也许Apache PHP的sendmail配置有问题,而CLI配置是正确的。

票数 3
EN

Stack Overflow用户

发布于 2011-12-23 03:00:18

您首先需要验证当前设置是否为您认为的设置:

代码语言:javascript
复制
var_dump(ini_get('sendmail_path'));

如果web和CLI不同,PHP可能是不同的php.ini文件。运行以下命令:

代码语言:javascript
复制
phpinfo(INFO_GENERAL);

..。并找到这一部分(你的价值观将与我的不同):

代码语言:javascript
复制
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => C:\Program Files\PHP\php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)

这将帮助您确定需要编辑的php.ini文件。

(不管怎么说,这在Linux服务器上配置错误是很奇怪的。)

票数 1
EN

Stack Overflow用户

发布于 2011-12-23 03:17:44

当你从cli运行php时,它是在你登录linux的帐号下运行的。当您从Apache运行时,php以Apache运行时所使用的用户身份运行,通常是“无名之辈”

“没有人”的邮件失败可能有几个原因--一些垃圾邮件过滤器会拒绝它。

此外,我不确定你所说的“失败”是什么意思--没有收到你期望的电子邮件并不意味着它没有发送出去。您应该检查邮件日志(通常位于/var/ log /maillog中),在从浏览器运行脚本检查该日志中的最新几行后,键入

代码语言:javascript
复制
# tail -20 /var/log/maillog

看看你是否能发现你的电子邮件是被发送还是被拒绝。另外,等待几分钟并再次检查日志-您的原始电子邮件可能会从某些邮件服务器退回,它将包括为什么退回的解释

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8608249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档