2011-12-13 276 views
1

將Pressflow添加到我們的Drupal安裝時突然發生此錯誤。它來自定製模塊,在Pressflow之前似乎工作正常。增加Pressflow後,運行Drush會導致此錯誤顯示在屏幕上。「未定義的屬性:stdClass」

被識別爲錯誤的來源的功能是這樣的:

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_search_location_get $ user_location_pref()

回答

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。這會提示這類問題很多。

如果這是您唯一的通知問題,但更正您的自定義模塊更有意義。

+0

我認爲你是真正的問題。但是,這一切都發生在Drupal 6中;只有一個皺紋 - 直到Pressflow Drupal安裝之前,錯誤才變得明顯。所以。你提供了在Drupal 7中打開/關閉的方法。那麼Drupal 6呢? 另請注意,這些錯誤通過Drush在屏幕上顯示。 – user908998 2011-12-14 23:33:26