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_location_pref в user_search_location_get()

ответ

2

Короткий ответ, в вашем пользовательском модуле, вы должны проверить, существует ли это свойство до того, как вы посчитаете i т. Это или убедитесь, что объект $ user имеет это свойство, прежде чем использовать его.

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

Хотя это немного больше работы, когда вы начинаете разработку с уведомлениями включен, вы найдете ошибки в коде, которые иначе бы не появились до позже, и были бы более трудно отследить.

В вашей предыдущей среде или установке отчет об ошибках PHP, вероятно, был установлен, чтобы не показывать уведомления. Хотя я рекомендую хранить уведомления и делать код с ними, вы можете отключить их через интерфейс Drupal 7. Конфигурация -> Разработка -> Регистрация и ошибки. Затем установите значение «Ошибки и предупреждения» ... В противном случае вы можете установить уровень отчетности об ошибках в php.ini, чтобы сообщать обо всех, кроме уведомлений.

Обратите внимание, что Drupal 6 не форсировал уведомление о регистрации, в то время как Drupal 7 делает. Это очень часто задает этот вопрос.

Если это ваша единственная проблема с уведомлением, имеет смысл просто исправить свой настраиваемый модуль.

+0

Я думаю, что вы находитесь в реальной проблеме. Однако все это произошло в Drupal 6; с одной морщиной - ошибки не стали очевидными до тех пор, пока не был установлен Pressflow 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

Смежные вопросы