警告:php_eval()

时间:2013-02-27 11:10:49

标签: php drupal-7

我在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.";
}

2 个答案:

答案 0 :(得分:1)

看起来您的主机不允许执行eval()功能,这是常见的,因为它可以在各种漏洞利用脚本中用于破解服务器。他们可能不会允许您使用它,因为它可能危及整个服务器,您需要更改主机!

答案 1 :(得分:0)

更改主机无法解决问题,我的Ubuntu服务器允许使用eval()函数,但我在Apache日志中报告了相同的错误:

  1. 这是Apache错误: PHP解析错误:语法错误,/home/websites/domainname/modules/php/php.module(80)中的意外T_STRING:第3行的eval()代码
  2. 2. php.module正在使用函数“php_eval: 你可以在这里查看: http://api.drupal.org/api/drupal/modules%21php%21php.module/function/php_eval/7

    第80行是这样的: print eval('?&gt;'。$ code);

    如果我删除了。 $ code然后没有报告错误,所以我不认为它的PHP标签。网站上没有任何错误,只是每个访问者的错误日志都在增长。

    1. 您可以使用以下代码测试服务器上是否允许使用eval()函数:

    2. 进一步请注意,我使用的是GoVideo主题,而eval功能脚本在首页底部显示3个网址。 3个URL指向Youtube,Flickr和facebook。你可以在这里查看它们(漫步到底部)。 http://govideo.themesnap.net/

      说清楚;如果我删除了$ code变量,那么我会在首页上删除3 x Urls。