2011-12-13 17 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 in user_search_location_get()

答えて

2

簡単な答えでは、あなたのカスタムモジュールでは、あなたがiを数える前にそのプロパティが存在するかどうかチェックする必要がありますt。それを使用する前に$ userオブジェクトにそのプロパティがあることを確認してください。

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

それはもう少し作業ですが、あなたは通知で開発を開始しますが、そうでない場合まで、後に登場していないだろう、と追跡するのがより困難であったであろう、あなたのコード内のエラーを見つけるだろう、オン。

以前の環境またはインストール環境では、PHPエラー報告はおそらく通知を表示しないように設定されていました。私は注意書きを保持し、あなたのコードをそれらと一緒に使用することをお勧めしますが、Drupal 7のUIでそれらのコードを無効にすることができます。設定 - >開発 - >ロギングとエラー。次に、値を 'Errors and Warnings'に設定します。そうでなければ、php.iniのエラー報告レベルを設定して、すべての例外通知を報告することができます。

Drupal 6は、Drupal 7は通知を強制しませんでしたが、注意してください。これは、このタイプの質問をたくさん促します。

これが唯一の問題である場合は、カスタムモジュールを修正するほうが理にかなっています。

+0

あなたは本当の問題を抱えていると思います。しかし、これはすべてDrupal 6で起こった。 1つのしわを伴って - プレスフローがインストールされるまで、エラーは明らかにならなかった。そう。 Drupal 7でオン/オフを切り替える方法を教えてください。Drupal 6はどうでしょうか? また、これらのエラーはDrushを介して画面に表示されています。 – user908998

+1

私は結論を無視したい場合、PHPのエラー報告を 'error_reporting(E_ALL^E_NOTICE);に設定する必要があるという結論に達したと思います。 php.iniで設定してWebサーバーを再起動することができます。多分Drupal 6はそれらを押さえつけ、Pressflowは強制しませんでしたか?わからない。 – Coder1

+0

はい、PressflowとDrupal 6はエラーレポートを別のレベルに設定します。 – kiamlaluno

関連する問題