-1

进行 Drupal 更新后,我收到此错误 - 我相信以前的开发人员(愚蠢地)编辑了核心:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 74 bytes) in /home/readyby2/public_html/includes/common.inc on line 1408

我相信这与更新视图模块有关。它发生在管理>>人员>>个人资料

你们都可以给我任何线索吗?

我正在检查我的 common.inc,这是第 1408 行及周边:

function _filter_xss_split($m, $store = FALSE) {
  static $allowed_html;

  if ($store) {
    $allowed_html = array_flip($m);
    return;
  }

违规行似乎是$allowed_html = array_flip($m);

这是完整的功能:

function _filter_xss_split($m, $store = FALSE) {
  static $allowed_html;

  if ($store) {
    $allowed_html = array_flip($m);
    return;
  }

  $string = $m[1];

  if (substr($string, 0, 1) != '<') {
    // We matched a lone ">" character.
    return '&gt;';
  }
  elseif (strlen($string) == 1) {
    // We matched a lone "<" character.
    return '&lt;';
  }

  if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9]+)([^>]*)>?|(<!--.*?-->)$%', $string, $matches)) {
    // Seriously malformed.
    return '';
  }

  $slash = trim($matches[1]);
  $elem = &$matches[2];
  $attrlist = &$matches[3];
  $comment = &$matches[4];

  if ($comment) {
    $elem = '!--';
  }

  if (!isset($allowed_html[strtolower($elem)])) {
    // Disallowed HTML element.
    return '';
  }

  if ($comment) {
    return $comment;
  }

  if ($slash != '') {
    return "</$elem>";
  }

  // Is there a closing XHTML slash at the end of the attributes?
  $attrlist = preg_replace('%(\s?)/\s*$%', '\1', $attrlist, -1, $count);
  $xhtml_slash = $count ? ' /' : '';

  // Clean up attributes.
  $attr2 = implode(' ', _filter_xss_attributes($attrlist));
  $attr2 = preg_replace('/[<>]/', '', $attr2);
  $attr2 = strlen($attr2) ? ' ' . $attr2 : '';

  return "<$elem$attr2$xhtml_slash>";
}
4

1 回答 1

3

一旦你的记忆结束,这个错误就会发生 - 这可能发生在你的代码中的任何地方,并且不一定属于你在错误消息中显示的脚本和行号。

您的 php 在 php.ini 中需要更多内存,或者您检查脚本是否有不必要的内存使用(通常很大或很多内存数据库记录)。

编辑:您发布的代码没有(愚蠢地)被开发人员更改 - 它仍然是原始的 drupal 代码。

于 2012-09-07T18:24:02.523 回答