【问题标题】:apache prevents php mail() from working (no SELinux)apache 阻止 php mail() 工作(没有 SELinux)
【发布时间】:2014-08-01 12:31:04
【问题描述】:

哪些有效,哪些无效:

我有一个自定义的 sendmail 包装脚本,它仅由 PHP-Cli 触发,但在通过 Apache php_mod 执行时不会触发。

  • 当我运行 $ php mail.php 时,一切正常,mail() 返回 true。
  • 当我通过我的 Apache 运行同一个文件时,它不起作用,mail() 返回 false。
  • 在这两种情况下,我的(php.ini) [mail function] mail.log = ... 文件中都有一个条目。

问题:

那么我该如何解决这个问题? 我希望它可以通过 PHP-Cli 和 Apache php_mod 工作。

设置:

  • 我将 php.ini 文件中的 sendmail_path 变量设置为我的自定义包装脚本。
  • 我不运行 SELinux。
  • 我不运行 AppArmor。

  • PHP 版本:5.5.15

  • Apache 版本:2.4.10
  • 系统为:ArchLinux(内核:3.15.5)

配置:

httpd.conf

编辑:

目前 Apache 无法访问 sendmail_path 的 php.ini 值,我该如何解决这个问题?

我的 php.ini 中disable_functions 的列表是空的。

phpinfo() on 的输出:

  • PHP-Cli
  • Apache 在 pastebin ID: rjjjtUXZ

抱歉,目前我的问题中不允许使用超过 2 个链接。

【问题讨论】:

  • 通过apache调用时检查执行php的用户。 apache 用户可能没有足够的权限来执行或访问 sendmail_path 的配置。
  • 好吧,你是对的,一个 ini_get('sendmail_path') 显示它包含错误的值,我将如何授予它访问权限?
  • 检查 phpinfo() 在这两种情况下,检查配置文件的位置,它可能不同,所以确保两个地方都有正确的配置。 100% 确定两种情况下的配置文件不一样
  • 如果 sendmail_path 设置不正确,您可以使用 'which sendmail' 找出您的 sendmail 路径并将其设置为 sendmail_path var
  • @AronNovak Loaded Configuration File 是一样的。但sendmail_path 的值不同。

标签: php apache email unix


【解决方案1】:

'mail' 在 php.ini 的 disable_functions 列表中吗?

【讨论】:

  • 否 disabled_functions 列表为空。如果是的话,PHP-Cli 版本也不会工作。
  • 不一定,CLI 和 Apache 的 php.ini 文件会有所不同。
  • 关于问题的澄清问题应该是评论,而不是答案。考虑删除。
  • 这对我来说是新的......我在哪里可以找到说 Apache php.ini?
  • 尝试 /etc/php5/ 的 'ls -al' 以查看不同的环境类型(apache2、cli 等)。每个文件夹中都有一个 php.ini。
猜你喜欢
  • 2015-04-29
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
  • 2011-01-14
  • 2010-11-30
  • 1970-01-01
  • 2014-03-30
相关资源
最近更新 更多