首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告: php_eval()

问警告: php_eval()
EN

Stack Overflow用户
提问于 2013-02-27 19:10:49
回答 2查看 2.3K关注 0票数 1

我在我的drupal站点中添加了一些php代码。当我尝试运行它时,它显示如下警告

“警告:有关php_eval()中的故障,请与支持部门联系(/FolderPath../modules/php/php.module的第80行)。”

在php.module第80行中包含

代码语言:javascript
复制
ob_start();
print eval('?>' . $code);
$output = ob_get_contents();
ob_end_clean();

实际上这是一个用来发送邮件的php代码。

任何人请帮我找出这一点。

提前感谢

这是我为发送邮件而写的代码……

代码语言:javascript
复制
    $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.";
}
EN

回答 2

Stack Overflow用户

发布于 2013-02-27 19:13:18

看起来您的主机不允许执行eval()函数,这很常见,因为它可以在各种攻击脚本中用来攻击服务器。很可能他们也不允许你使用它,因为它可能会危及整个服务器,你需要更换主机!

票数 1
EN

Stack Overflow用户

发布于 2013-03-13 18:46:06

更改主机不能解决问题,我的Ubuntu服务器允许eval()函数,但我在Apache日志中收到相同的错误报告:

  1. 这是Apache错误: PHP解析错误:语法错误,/home/websites/domainname/modules/php/php.module(80):eval()中的意外代码第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标签的问题。网站上没有错误,只是每个访问者的错误日志都在增长。

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

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

为了清楚起见,如果我删除了$code变量,那么我就失去了首页上的3个Urls。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15110596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档