1

drupal サイトにいくつかの php コードを追加しました。実行しようとすると、次のような警告が表示されます

「警告: php_eval() (/folderpath../modules/php/php.module の 80 行目) の失敗についてサポートに連絡してください。」

そのphp.moduleの80行目に含まれています

ob_start();
print eval('?>' . $code);
$output = ob_get_contents();
ob_end_clean();

実はメールを送信するためのphpコードでした...

誰でもこれを見つけるのを手伝ってください...

前もって感謝します

これは私がメールを送信するために書いたコードでした...

    $strTo = $_POST["txtTo"];
$strSubject = $_POST["txtSubject"];
$strMessage = nl2br($_POST["txtDescription"]);

//*** Uniqid Session ***//
$strSid = md5(uniqid(time()));

$strHeader = "";
$strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"]."";

$strHeader .= "MIME-Version: 1.0\n";
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n";
$strHeader .= "This is a multi-part message in MIME format.\n";

$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-type: text/html; charset=utf-8\n";
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n";
$strHeader .= $strMessage."\n\n";

//*** Attachment ***//
if($_FILES["fileAttach"]["name"] != "")
{
    $strFilesName = $_FILES["fileAttach"]["name"];
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
    $strHeader .= "--".$strSid."\n";
    $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $strHeader .= "Content-Transfer-Encoding: base64\n";
    $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
    $strHeader .= $strContent."\n\n";
}


$flgSend = @mail($strTo,$strSubject,null,$strHeader);  // @ = No Show Error //

if($flgSend)
{
    echo "Mail send completed.";
}
else
{
    echo "Cannot send mail.";
}
4

2 に答える 2

1

ホストが関数の実行を許可していないようですeval()。これは、サーバーをハッキングするためのさまざまなエクスプロイト スクリプトで使用できるため、一般的です。サーバー全体を危険にさらす可能性があるため、ホストを変更する必要があるため、使用が許可されない可能性があります。

于 2013-02-27T11:13:18.213 に答える
0

ホストを変更しても問題は解決しません。私の Ubuntu サーバーでは eval() 関数を使用できますが、Apache ログに同じエラーが報告されます。

  1. これは Apache エラーです: PHP 解析エラー: 構文エラー、予期しない T_STRING in /home/websites/domainname/modules/php/php.module(80) : eval()'d code on line 3

2. php.module は関数 "php_eval: ここで表示できます: http://api.drupal.org/api/drupal/modules%21php%21php.module/function/php_eval/7

80 行目は次のとおりです。 print eval('?>' . $code);

を削除すると。$code の場合、エラーは報告されないので、php タグではないと思います。Web サイトに問題はありません。訪問者ごとにエラー ログが増えているだけです。

  1. 次のコードを使用して、サーバーで eval() 関数が許可され、実行されているかどうかをテストできます。

さらに、私は GoVideo テーマを使用しており、eval 関数スクリプトはフロント ページの下部に 3 つの URL を表示していることに注意してください。3 つの URL は、Youtube、Flickr、および facebook を指しています。ここで見ることができます(一番下まで歩いてください)。 http://govideo.themesnap.net/

明確にするために; $code 変数を削除すると、フロント ページの 3 つの URL が失われます。

于 2013-03-13T10:46:06.217 に答える