在Drupal中评估代码问题

时间:2011-06-07 13:20:34

标签: php drupal

当我登录我的drupal页面时。它显示以下错误

Parse error: syntax error, unexpected '<' in /document_root/sites/all/modules/rules/rules/modules/php.rules.inc(107) :

第1行的eval()代码

当我想到特定页面时,该功能没有问题。下面是错误标记为..

的函数
function rules_php_eval_return($code, $arguments = array()) {
  extract($arguments);
  return eval($code);
}

任何人都能建议我可能会遇到什么问题!这是drupal 6.x版本。

4 个答案:

答案 0 :(得分:2)

当我将一个来自Drupal站点的PHP代码片段粘贴到一个块来显示子菜单时,我遇到了这样的错误。这些子菜单在foreach循环中被检测并分配,但由于没有任何子菜单,菜单变量仍然未分配,因此也未声明。

我明显的解决方案是在foreach循环之前为菜单变量分配一个空字符串。

答案 1 :(得分:1)

我不知道drupal,但我认为$ code包含类似的内容:

$code = '<?php $someCode;';
eval($code);
//Produces : Parse error: syntax error, unexpected '<' in file(1) : eval()'d code on line 1

错误告诉您$ code包含解析错误(可能是phptag)

你是一个echo $ code来检查是什么问题。

答案 2 :(得分:0)

当使用php模块(php过滤器)在网站中嵌入错误的自定义php代码时,通常会出现eval'd 如果您仍然可以访问站点,请转到“触发规则和规则集”页面,查找是否有任何规则触发自定义PHP代码。 将php代码放入规则是愚蠢的风格。您应该创建模块或使用规则本身:)

如果您无法访问该站点,请转至/ modules文件夹并将“php”文件夹移动到其他位置。然后您就可以访问网站了。快速删除错误的代码并替换该文件夹。 然后,开始调试它。

答案 3 :(得分:0)

我在尝试处理HTTP请求返回的数据时遇到了同样的问题。我使用的是simplexml_load_string,但HTTP响应是一个错误,所以数据没有格式化为XML,因此导致simplexml错误(传播)。我的消息和你的一样,“第X行的文件错误;第X行的eval'd()代码”。因此,它可能不一定是您的代码中的错误,甚至是评估代码。

虽然看起来您没有以下问题,但也要记住这一点。在eval'd代码中声明变量时,它们的范围与文件中的内联相同。类似地,eval'd代码之前的变量在其中可用,并且可能导致冲突或无意中重新分配(例如,嵌套循环中的$ i)。