12

以前はローカルホストで完全に機能していたDrupalインストールがあります。ただし、現在、コンピューターをフォーマットすると、空白の画面(完全に白)が表示されます。

だから私の質問は、サーバーにログインすることさえできない場合、どうすれば問題が発生しているのかを確認できますか?

私が見つけることができる唯一のエラーは(Apacheエラーログから取得):

[Tue May 17 05:05:04 2011] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 17 05:05:04 2011] [notice] Digest: generating secret for digest authentication ...
[Tue May 17 05:05:04 2011] [notice] Digest: done
[Tue May 17 05:05:07 2011] [notice] Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 configured -- resuming normal operations
[Tue May 17 05:05:07 2011] [notice] Server built: Dec 10 2008 00:10:06
[Tue May 17 05:05:07 2011] [notice] Parent: Created child process 6992

ウォッチドッグにエラーはありません...

Xamp 1.7.1(PHP 5.2)とDrupal6を使用しています。

また、ローカルマシンにサイトをロードしようとすると、apacheもクラッシュすることにも言及する必要があります。私はこれを追加しました:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

そして、それはまだ死の画面を示していますか?実際にどこでエラーを確認できますか?

これはapacheaccess.logでも見つかりました:

127.0.0.1 - - [17/May/2011:05:22:14 +0200] "GET /greekmerchant/src/ HTTP/1.1" 200 3
127.0.0.1 - - [17/May/2011:05:25:45 +0200] "GET /greekmerchant/src/update.php HTTP/1.1" 302 -
127.0.0.1 - - [17/May/2011:05:25:46 +0200] "GET /greekmerchant/src/update.php?op=info HTTP/1.1" 200 -

...update.phpにアクセスしようとした後。また、白い画面に移動します。

私はこれを私のsql設定ファイルに持っています:

[mysqld]
port= 3306
socket= "C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/data"
skip-locking
key_buffer = 16M
max_allowed_packet = 128M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error="mysql_error.log"

と...

[mysqldump]
quick
max_allowed_packet = 128M

また、私のPHPメモリは1024MBに設定されています。

なぜこれが死にかけているのか、誰かが知っていますか?それは本当にメモリの問題ですか?エラーが表示されるようにするには、他に何ができますか?エラーロギングを有効にしても何も表示されません。

アップデート:

ファイルフォルダを削除すると、Webサイトはローカルマシンで実行されます。そのため、何らかの理由で、ファイルフォルダ内のファイルにアクセスする必要がある場合、メモリが不足します。なんで?またはさらに良いことに、このメモリの過度の使用を引き起こしている可能性があるのは何ですか?

4

9 に答える 9

13

Drupalハンドブックには、「死の白い画面」のデバッグ専用のページ全体があります。一言で言えば、index.phpファイルの先頭に以下を追加してエラー報告を有効にします。

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

...そして、すでに開始したログを確認します。これらの2つのステップは、ほとんどの場合、問題を特定する傾向があります。それでも解決策が見つからない場合は、ハンドブックのページを続けて、さらに多くのヒントを入手してください。

私が大げさな推測をしなければならなかったとしたら、あなたのケースはおそらくメモリ不足のエラーだと思います。

于 2011-05-17T03:16:14.523 に答える
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つのprintステートメントを追加してから、ページを更新します。「Finishloading$module」ステートメントに到達しなかったモジュールが問題のあるモジュールです...私の場合は開発されました。

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

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

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

于 2014-03-01T12:33:21.753 に答える
1

Linuxホストであるとすると、ホストがsuPHPまたは他の形式のsuexecを実行している場合は、権限の問題である可能性があります。ファイルの所有権が正しく、アクセスモードが正しいことを確認してください。

無効な.htaccessファイルがある可能性もあります。これをテストするためだけに、ファイルを削除してみてください。

于 2011-05-28T10:08:56.213 に答える
1

PHPのエラー報告設定を確認してください。エラー報告を有効にする必要がある場合があります。

これは役立つかもしれません:http://drupal.org/node/158043

于 2011-05-17T03:17:26.583 に答える
1

theme('page')レンダリングのコンテンツは空であり、それで十分にWODが得られます。

これを使用すると、WODに関連するいくつかの一般的な問題が見つかります。

また、権限を再構築してみてください。最善の方法は、drushを使用して次のように入力することです。

drush php-eval 'node_access_rebuild();'

また、drushを使用して、現在インストールされているモジュールを表示します。

drush sm

すべてのカスタムモジュールを無効にして、検索します。

drush disable <modulename>

そして、あなたが急いでいる間に、キャッシュをクリアします:

drush cc

あなたがcronが問題であると考えるなら、私は以前にひどく書かれたcronフックで大きな問題を抱えていました、それがあなたの問題である場合に備えて、 supercronはこれのあなたの友達になります。

非常に悪い動作をするモジュールがない限り、十分なメモリが必要です 。

*トラブルシューティングの更新

update.phpの実行中に問題が発生した場合は、テキストエディタでupdate.phpを開き、次の行のコメントを解除します。

ini_set('display_errors', FALSE);

その他のwsod修正については、このページを参照してください。特に、path-autoを使用している場合は、そのページに記載されている修正を調べる価値があります。

于 2011-05-24T13:46:05.117 に答える
1

私のアドバイスは、モジュールとテーマフォルダの内容全体を取得してデスクトップにダウンロードすることです。これらのテーマとモジュールは、一時的に無効にされたままインストールされています。サイトが戻ってきた場合は、モジュールまたはテーマのエラーである可能性があります。誰かが終了ブラケット'}'を見逃した可能性があります。モジュールやテーマに問題がないことが確実な場合は、それらをフォルダに戻して、損失を出さないようにします。何も失うことはないので、これを試してみても害はありません。モジュールの問題であることがわかった場合は、途中で更新してフォルダに1つずつ戻します。サイトの白い画面が表示されたら、問題が見つかり、モジュールを更新すると役立つ場合があります。

drupalのインストールはかなり堅実なので、私は常にこれを最初に試します。それはあなたが心配しなければならないモジュールとテーマです。

ここにある他の回答とは異なり、これは問題を正確に特定することはできませんが、私のように怠惰で、構成ファイルを変更してエラーをオンにしたくない場合は、これが進むべき方法です。他のすべてが失敗したときに構成します。

于 2011-05-27T13:23:19.213 に答える
1

私のphp.ini中で私はこれらの変数を変更しました:

error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On 
display_startup_errors = On

実行:

sudo apachectl restart

すべてのDrupalサイトでこれらのエラーを取り除きます。

于 2012-09-24T08:58:09.767 に答える
0

何が悪かったのかわからないWSODがありました。display_errors//を有効にした後display_startup_errors、エラーは表示されませんでしたerror_reporting。PHPエラーログには何もありませんでした。サーバーエラーログには何もありませんでした。ただのWSODと図を見てください。

私が最終的にDrupalを誘導してエラーメッセージを表示させる方法は、を有効に$update_free_access = FALSE;してに移動することでした/update.php。これは、保留中の更新がないことを示していましたが、データベースに大量のエラーがリストされていました。これは、データのインポートが混乱した結果でした。

ここに画像の説明を入力してください

于 2014-09-20T17:25:22.303 に答える
0

テーマのディレクトリ(ディレクトリまたはファイル)の内容を確認してください。

テーマでは、フォルダロジックがないためmarinelli、この種の問題が発生します。

于 2018-11-16T08:43:08.543 に答える