使用 "tee…" 作为 sendmail_path in php 会在使用“-f”参数时产生一个额外的文件。

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

我正在使用我在 学到的知识将我本地计算机上 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 returns false。)

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

pseudo_sendmail

#!/usr/bin/env bash
tee /testmail/mail.txt

PHP 配置:

sendmail_path ='/path/to/pseudo_sendmail'