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

これを機能させるには、2 つまたは 3 つのことが必要です。

このソリューションは sendmail で機能します。

最初:

chmod 777 /home/userA/script.php 

2番目:ファイルにsimlinkを追加し/etc/smrshますscript.php

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

3 番目: simlink を常に/etc/smrshphp bin 自体に追加します! 理由は聞かないで...

ln -s /usr/bin/php php

4番目:.forward作成したファイル内/home/userA/

1行だけ書き、次にfilePathで開始|phpます

|php /home/userA/script.php

script.phpファイル内で、追加する前に(<?php bla... ?>必要#!/usr/bin/php -qかどうかはわかりませんが、うまく機能します...)

この例では、php は次の場所にあります。 を実行して、php バイナリが配置されている場所を見つける/usr/bin/phpことができます。$ which php

script.php転送したメールにアクセスしたい場合は、これを行うことでできます

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

一部のバージョンの sendmail では、sh の代わりに smrsh を使用するように自分で構成する必要があります (セキュア シェルとクラシック シェル)。に smrsh を追加する必要がありますsendmail.mc。ここにいくつかの情報があります: smrsh を使用するように sendmail を構成します

これで、にメールを送信できuserA@myDomain.comます。メールは php スクリプトに渡されます。すごいでしょ!?

于 2013-06-06T23:48:33.130 に答える