2011-12-13 2 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

간단한 대답은 맞춤 모듈에서 사용자가 i를 계산하기 전에 해당 속성이 존재하는지 확인해야합니다. 티. 그, 또는 그것을 사용하기 전에 $ 사용자 개체가 해당 속성을 가지고 있는지 확인하십시오. 당신이 통지와 함께 개발을 시작

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에서 일어났습니다. 프레스 플로우 드루팔 (Drupal)이 설치 될 때까지 오류가 드러나지 않았다. 그래서. 당신은 Drupal 7에서 켜거나 끌 수있는 방법론을 제공했습니다. Drupal 6은 어떻습니까? 또한 이러한 오류는 Drush를 통해 화면에 표시됩니다. – user908998

+1

나는 결론을 무시하고 싶다면 PHP의 오류보고를'error_reporting (E_ALL^​​E_NOTICE);로 설정해야한다고 결론 짓는다. php.ini에서 설정하고 웹 서버를 다시 시작할 수 있습니다. 어쩌면 드루팔 (Drupal 6)이 압박감을 느끼고 프레스 플로우 (Pressflow)가 그렇게하지 않았을까? 확실하지 않다. – Coder1

+0

예, Pressflow 및 Drupal 6은 오류 보고서를 다른 수준으로 설정합니다. – kiamlaluno

관련 문제