1

我创建了一个系统用户userA

/home/userA/我放了一个文件.forward和一个 php 脚本script.php

.forward我放的/home/userA/script.php

script.php我放的

#!usr/bin/php -q
<?php
mail('userB@myDomain.com','something','something else');
?>

脚本中的电子邮件是正确的,服务器工作正常。(我的意思不是发送电子邮件,而是确认脚本已执行)

当我向我userA@myDomain.com的邮件发送邮件时,邮件无法发送,并且出现邮件程序恶魔错误:

    ----- The following addresses had permanent fatal errors -----
/home/userA/script.php
   (reason: Can't create output)

可能是什么问题呢?

4

2 回答 2

0

好的,有两件事或三件事来完成这项工作。

此解决方案适用于 sendmail。

第一的:

chmod 777 /home/userA/script.php 

/etc/smrsh第二:在script.php文件中添加一个simlink

ln -s /home/userA/script.php script.php

/etc/smrsh第三:总是在php bin中添加一个 simlink !不要问为什么...

ln -s /usr/bin/php php

第四:在.forward您创建的文件中/home/userA/

只写一行,然后用|filePathphp开始

前任|php /home/userA/script.php

script.php文件中,在<?php bla... ?>添加之前#!/usr/bin/php -q(我不确定是否有必要,但它可以正常工作......)

在这个例子中 php 位于/usr/bin/php你可以做一个$ which php找到你的 php 二进制文件所在的位置。

如果script.php你想访问你转发的邮件,你可以这样做

$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
    $email .= fread($fd, 1024);
}
fclose($fd);

在某些版本的 sendmail 中,您必须自己配置它,以便它使用 smrsh 而不是 sh(安全 shell 与经典 shell)。您必须在sendmail.mc. 这里有一些信息:配置 sendmail 以使用 smrsh

现在您可以发送电子邮件至userA@myDomain.com,您的电子邮件将被传递到 php 脚本。厉害吧!?

于 2013-06-06T23:48:33.130 回答
-1

如果你想调用一个 php 脚本并执行它,你需要一个类似的命令: php /home/userA/script.php 它比 #​​!usr/bin/php -q 方法更常见(我确信它有效)

另外,我认为您不能使用 .forward 方法将电子邮件转发到命令。

您可以做的是将邮件接收到 userA 邮箱,然后使用守护程序(php 或 bash 脚本)执行脚本,该脚本将检查收件箱中是否有新邮件。或者,如果您只想转发到另一个电子邮件地址,只需将地址放入 .forward 即可。

于 2013-06-06T19:01:24.093 回答