web-dev-qa-db-ja.com

ヘッダーの送信中のWSOD、おそらくキャッシュ関連

新しいDrupalインストールで非常に奇妙な問題があります:一部のページで、_ERR_EMPTY_RESPONSE_を含むWSODを受け取ります:

WSOD

たとえば、_admin/config/development/performance_でClear all cachesをクリックすると発生します。 (ただし、他のページも影響を受けます。たとえば、NodeタイプのLayout Builderページ)。

興味深いことに、ここでバグを特定することができます。もしvendor/symfony/http-foundation/Response.php::sendHeaders()の場合は、コードを微調整して、送信する多くのヘッダー(実際には、_X-Generator_と_X-Frame-Options_)、エラーが消えます。

_...
$headers = $this->headers->allPreserveCaseWithoutCookies();
unset($headers['Cache-Control']);
unset($headers['Content-language']);
unset($headers['Date']);
unset($headers['X-Drupal-Dynamic-Cache']);
unset($headers['X-UA-Compatible']);
unset($headers['X-Content-Type-Options']);
unset($headers['Expires']);
unset($headers['Vary']);
foreach ($headers as $name => $values) {
  ... 
_

私が設定解除したヘッダーに基づいて、それはキャッシング関連の問題であるようです。 (ただし、キャッシュはオフになっています、ブラウザとプロキシキャッシュの最大経過時間は_<no caching>_に設定されています。)

私のセットアップ:

  • インストールDrupal 8.7.5 composer 経由
  • 私のローカルマシンでは、macOS High Sierraを搭載したMacBook Pro
  • homebrew経由でインストール
    • PHP 7.3
    • Apache 2.4
    • MySQL 5.7.24

問題が何であるか考えていますか?

編集:Apacheエラーログに関して:最初はそこにエントリがありませんでしたが、今度は再度デバッグしてそのようなエントリを確認しました。

_[core:notice] [pid 92592] AH00052: child pid 98466 exit signal Bus error (10)
_

グーグルは suggestionapc_clear_cache();に与えましたが、PHP7では使用できません。だから私は opcache-reset() を実行しました。

結果:ページ__admin/config/development/performance_を開いたときに、まだ問題が残っています。

エラーログは今言う:

_ [core:notice] [pid 7428] AH00052: child pid 7446 exit signal Segmentation fault
_

Google suggests これは、_php.ini_の構文エラーまたはそこに含まれる拡張機能が原因である可能性があります。したがって、私はすべての拡張機能を取り出しました。

_zend_extension=/usr/local/opt/php/lib/php/20180731/opcache.so
_

しかし、問題は残っています。

編集2:これが私の_php -i_の出力です(phpinfo()と同じ_php.ini_ファイルを使用しています) localhostで)。 https://Pastebin.com/ppvCpPA6

1
Georg Jähnig

今、私はそれを自分で解決することができました。 Apacheのエラーログに表示されました

AH00052: child pid 7363 exit signal Segmentation fault (11)

したがって、Apacheの設定に問題があったに違いありません。

私は機会を利用してApacheを再インストールし、FCGI/FPMこれによる で構成しましたが、問題は解決しました。

1
Georg Jähnig

実行時のデバッグモードの設定に同じ問題があります

drupal smo dev

Prodモードに設定すると問題が発生します

 drupal smo prod

しばらくデバッグした後、キャッシュヘッダーが原因で問題が見つかりました。そして、私は変わります

http.response.debug_cacheability_headers: true

http.response.debug_cacheability_headers: false

それは再び働いています。

0
Jonh