使用“三通……“因为PHP中的sendmail_path在使用"-f"参数时会产生一个额外的文件


Using "tee…" as sendmail_path in php results in an extra file when using "-f"-parameter.

我正在使用我在https://stackoverflow.com/a/3176517/学到的东西,将本地机器上PHP中的mail()命令路由到一个文件。来自php.ini:

sendmail_path ='tee /testmail/mail.txt'

但是当我添加一个additional_parameter (-fwebmaster@example.com)时,它会生成一个名为-fwebmaster@example.com的附加文件,其中包含当前文件夹中的邮件内容。

完整示例:

$ cat | php -d sendmail_path='tee /testmail/mail.txt'
<?php
mail('test@example.com', 'subject', 'body', '', '-fwebmaster@example.com');
?>
To: test@example.com
Subject: subject

body

最后五行写入/testmail/mail.txt 以及新创建的-fwebmaster@example.com

似乎-f -参数被转发到tee -命令。有办法防止这种情况发生吗?

(使用cat会导致错误,PHP返回false)

您可以通过在shell脚本中包装命令来忽略php传递的任何附加参数:

pseudo_sendmail

#!/usr/bin/env bash
tee /testmail/mail.txt
PHP配置:

sendmail_path ='/path/to/pseudo_sendmail'
相关文章: