ホームページ >バックエンド開発 >PHPチュートリアル >PHP が長すぎるコンテンツを返し、nginx によって切り捨てられる問題の解決策

PHP が長すぎるコンテンツを返し、nginx によって切り捨てられる問題の解決策

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:12:471628ブラウズ

背景

日曜日にブログのバージョンを最新のものにアップグレードし、nginx と PHP 環境も再デプロイしました。 PHP7を使用しております。環境を再デプロイした後、最初にブログ投稿を公開したときに、編集ボックスが正常に表示されないことがわかりました。図に示すように:

分析

HTML ソース コードを表示したところ、HTML ソース コードが切り詰められていることがわかりました。したがって、Web ページのコンテンツが不完全に表示されます。

その後の分析プロセス全体は大きな円を描き、tcpdump と tcpflow を使用してネットワーク パケットを分析しました。最後に、nginx エラー ログから手がかりを見つけました。

nginx エラー ログで次の情報が見つかりました:

2016/03/29 06:08:10 [crit] 7042#0: *3 open() "/var/lib/nginx/tmp/fastcgi/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 117.72.224.240, server: www.bo56.com, request: "GET /wp-admin/post-new.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9010", host: "www.bo56.com", referrer: "http://www.bo56.com/wp-admin/edit.php"

エラー ログには、「Permission Deny」と表示され、権限がないことを示します。問題を解決するには、このディレクトリを 775 のアクセス許可に設定します。 Web ページは正常に表示されます。 PHP から返されたコンテンツが大きすぎる場合、nginx は最初にコンテンツの一部をテキスト ファイルに保存し、すべてのコンテンツを受信した後でそれをクライアントに送信します。

tcpdump を使用してパケットをキャプチャして分析すると、nginx プロセスが通信を終了するために PHP プロセスにリセット フラグを積極的に送信していることがわかりました。おそらく、nginx がアクセス許可に問題があることを発見し、接続を閉じたのではないでしょうか。単なる推測であり、検証はありません。写真は次のとおりです:

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。