1

当将 Pressflow 添加到我们的 Drupal 安装时,突然出现此错误。它来自一个自定义模块,在 Pressflow 之前似乎可以正常工作。添加 Pressflow 后,运行 Drush 会导致此错误显示在屏幕上。

被识别为错误源的函数如下所示:

function user_search_location_get(&$user) {
  if (count($user->user_location_pref)) {  // This line is causing the error.
    return $user->user_location_pref;
  }

  // …
}

错误消息如下:

WD php:注意:未定义的属性:stdClass::$user_location_pref in user_search_location_get()

4

1 回答 1

2

简短的回答,在您的自定义模块中,您应该在计算之前检查该属性是否存在。那,或者在使用它之前确保 $user 对象具有该属性。

if (isset($user->user_location_pref) && count($user->user_locaion_pref) > 0) {
  return $user->user_locaion_pref;
}

虽然需要做更多的工作,但当您在打开通知的情况下开始开发时,您会发现代码中出现错误,否则这些错误直到以后才会出现,并且更难追踪。

在您之前的环境或安装中,PHP 错误报告可能设置为不显示通知。虽然我建议保持通知并让您的代码与它们一起工作,但您可以通过 Drupal 7 UI 将它们关闭。配置 -> 开发 -> 日志记录和错误。然后将值设置为“错误和警告”...否则,您可以在 php.ini 中设置错误报告级别以报告除通知之外的所有内容。

请注意,Drupal 6 没有强制通知报告,而 Drupal 7 有。这提示了很多这类问题。

如果这是您唯一需要注意的问题,那么更正您的自定义模块会更有意义。

于 2011-12-14T22:03:08.007 回答