3

Drupal ですべてのエラーをオン (error_reporting(-1)) にしていますが、何らかの理由でほとんどのエラーがログや画面に表示されません。関数名を別のものに変更するだけで問題を再現できます。関数が存在しないというエラーが表示されると予想されますが、白い画面が表示されます。これを Drupal フレームワークの外で複製しようとしましたが、できません。つまり、PHP のセットアップ (Zend Server/Apache2/PHP/Windows) ではなく、Drupal のどこかにあると思われます...

アイデアはありますか?

4

8 に答える 8

4

これは遅いかもしれませんが、助けてくれました。ほとんどの場合、モジュールが原因で WSOD が発生します。その過程でデータが失われた可能性があるため、モジュールを無効にして原因をテストすることはできませんでした。私がしたことは、module.incでこの関数を編集することでした

function module_invoke_all($hook) {
  $args = func_get_args();
  // Remove $hook from the arguments.
  unset($args[0]);
  $return = array();
  foreach (module_implements($hook) as $module) {

        print "Starting loading $module <br />";

        $function = $module . '_' . $hook;
        if (function_exists($function)) {
          $result = call_user_func_array($function, $args);
          if (isset($result) && is_array($result)) {
            $return = array_merge_recursive($return, $result);
          }
          elseif (isset($result)) {
            $return[] = $result;
          }
        }

        print "Finished loading $module <br />";

  }

  return $return;
}

そして、上記のコードにこれら2つの印刷ステートメントを追加してから、ページを更新しました.「Finish loading $module」ステートメントに到達しなかったモジュールが問題のあるモジュールです...私の場合はdevelでした.

モジュールを見つけたら、システム テーブルに移動してそのモジュールを探し、ステータス = 0 およびブートストラップ = 0 に設定するか、クエリを実行します。

UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1

参考:Drupal White Screen of Death (WSOD) のデバッグ

于 2014-03-01T12:24:39.313 に答える
3

display_errorsも有効になっていることを確認する必要があります。

ini_set( 'display_errors', 'on' );
于 2011-03-11T17:14:33.067 に答える
2

WSOD の完全なドキュメント

于 2011-03-11T22:07:42.797 に答える
1

これはstackoverflowで最もばかげた答えかもしれませんが、これは、cakephpサイトをゼロから設計していて、cssに白い背景と白いフォントがあり、何も取得できず、エラーもSQLダンプもなかったときに起こりました。

画面上のテキストを選択できるかどうかを確認します。

于 2011-03-11T17:20:18.210 に答える
0

モジュールを有効/無効にして、いつエラーが再び表示されるかを確認し、エラー処理をオフにする2つのモジュールに制限しました...さらに調査したところ、nusoap.phpクラスでエラーレポートがオフになっていることがわかりました。エラーが表示され続けた(他の開発者がオフにしていた)...オンに戻し、nusoap.phpをアップグレードすると、すべてが機能するようになりました...すべてのヘルプに感謝します

于 2011-03-24T09:33:01.970 に答える
0

php の終了トークンを持つファイルを含めると、WSOD などの奇妙なエラーが発生することがありました。 ?>

追跡するのに永遠にかかりました。

于 2011-03-11T22:45:00.080 に答える
0

「error_reporting」のphpの設定を確認してください。私の設定は次のとおりです。

error_reporting = E_ALL & ~E_DEPRECATED

于 2011-03-11T18:34:42.087 に答える