0

私は bash スクリプトにまったく慣れていませんが、スパマーによって構成されている可能性のあるスクリプトを追跡できるように、php の sendmail が経由する次のスクリプトに出くわしました。

これはうまく機能しますが、 $PWD 変数にはファイル名が表示されず、ファイルの作業ディレクトリのみが表示されます。

Bash スクリプト: /usr/local/bin/sendmail2

#!/bin/sh
# Logging sendmail wrapper

SENDMAIL="/usr/sbin/sendmail -t -i"
LOGFILE="/home/mail.log"

DT=`date "+%Y-%m-%d %H:%M:%S"`
DTFN=`date "+%Y%m%d-%H%M%S"`
#TMPFP=`tempfile --prefix=lsm_`
TMPFP=`mktemp`

cat | tee "$TMPFP" | $SENDMAIL $*
RETVAL=$?

TO=`grep "To:" <"$TMPFP"`
rm -f "$TMPFP"

echo "$DT: $PWD sent $TO" >> $LOGFILE

exit $RETVAL

テストスクリプト: /home/mysite/test.php:

<?php
$to = "my@email.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "my@email.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

php.ini:

sendmail_path = "/usr/local/bin/sendmail2"
4

1 に答える 1

2

まあ、${PWD}「printworkingdirectory」(pwdそのためのコマンド)の略で、したがって、それはあなたに作業ディレクトリだけを与えるでしょう。これは仕様によるものです。

また、作業ディレクトリは、必ずしもスクリプトのフルパス(sendmail2スクリプトも、を呼び出すphp-scriptもsendmail2)とは関係ありません。

于 2013-02-05T16:48:44.463 に答える