最近、新しいサーバーに移行しました。 2日後、次の問題が発生しました
1)セッションテーブルでクラッシュがありましたが、それを修復することで簡単に修正できました
2)OpenXをアドサーバーとして実行し、クラッシュしましたが、error.logには証拠がありません。ログインしてみましょうが、dashboard.phpを見ると、次のようになります。
Error 330 (net::ERR_CONTENT_DECODING_FAILED): (Google Chrome)
そして
表示しようとしているページは、無効またはサポートされていない形式の圧縮を使用しているため表示できません。 (Firefox)
OpenXは、PHPで次のサービスを使用します。
OpenXの要件: http://www.openx.com/docs/2.8/adminguide/System%20requirements
OpenXはデフォルトのPHP設定を使用します。ただし、サーバー管理者はこれらの設定を変更する場合があります。 OpenXをインストールする前に、次の設定が正しいことを確認してください。
magic_quotes_runtimeをオフにする必要がありますsafe_modeをオフにする必要がありますregister_argc_argvコマンドライン経由でメンテナンスを実行する場合はfile_uploadsをオンにしてHTTPファイルのアップロードを許可する必要がありますOpenXには次のPHP拡張機能が必要です:
mysql
拡張子、またはpgsql
のいずれか。 mysqli
拡張機能はサポートされていません。 ZLib拡張。Flash MX
によって生成された圧縮Flashファイル内のリンクを変換します。 FTP拡張。これが存在しない場合、OpenXはそれをシミュレートしようとしますが、安定性の低いソリューションになる可能性があります。
Gd拡張。ホームページでグラフを生成します。拡張機能が有効になっていない場合、ホームページでグラフや統計を表示することはできません。ホームページにログオンするには、openssl拡張機能またはSSL対応のcurl拡張機能のいずれかが必要です。 SSLが有効になっていない場合、ホームページにエラーメッセージが表示されますが、操作への影響はありません。
考えられる理由や、より多くの情報を収集する方法についての手がかりは大歓迎です。ありがとう
HTTPリクエストのヘッダーがコンテンツがgzipエンコードされていると主張しているが、そうではない場合に発生します。 gzipエンコード設定をオフにするか、コンテンツが実際にエンコードされていることを確認してください。
zlib.output_compression
でphp.ini
を有効にすると、問題が解決したようです。
コードは、記録中にBOMなしでUTF8を保存する必要があります。 (Notepad ++)または他のコーディングツールでコードを記述し、UTF8エンコードを使用すると、このエラーが発生する場合があります。すみません、英語がわかりません。これは私の経験です。
このエラーは、出力バッファリングモジュールextension(ob_gzhandler)が追加されたために発生しました。出力バッファリングは、ob_start()の開始時とob_flush()の終了時に使用します
<?php
ob_start( 'ob_gzhandler' );
echo json_encode($array);
ob_end_flush();
?>
これを使って:
<?php
ob_start();
echo json_encode($array);
ob_flush();
?>
Codeigniter
フレームワークを使用する場合は、これを設定ファイルに作成します。
$config['compress_output'] = FALSE;
また、php.ini
構成ファイルで、次を使用します。
zlib.output_compression=On
この悪意のある問題の原因をまだ探している人がいる場合、原因ファイルを解決する解決策があります。 https://www.drupal.org/node/1622904#comment-10768958Drupal
コミュニティから。
そして私は引用します:
編集
includes/bootstrap.inc:
関数drupal_load()
。短い機能です。次の行を見つけます:include_once DRUPAL_ROOT . '/' . $filename;
一時的に置き換えます
ob_start();
include_once DRUPAL_ROOT . '/' . $filename;
$value = ob_get_contents();
ob_end_clean();
if ($value !== '') {
$filename = check_plain($filename);
$value = check_plain($value);
print "File '$filename' produced unforgivable content: '$value'.";
exit;
}
php.iniでgzip圧縮を有効にします。
zlib.output_compression = On
そして、これを。htaccessファイルに追加します:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
ob_start(ob_gzhandler)
関数を使用していますか?その場合、およびob_start(ob_gzhandler)
関数の上にコンテンツを出力すると、このエラーが発生します。この関数を使用したり、この関数の上にコンテンツを出力したりすることはできません。 ob_gzhandler
コールバック関数は、ブラウザが受け入れるコンテンツエンコーディングのタイプを決定し、それに応じて出力を返します。したがって、この関数の上にコンテンツを出力すると、コンテンツのエンコードがob_gzhandler
の出力コンテンツと異なる可能性があり、このエラーが発生します。
これを手に入れた誰かのためのもう一つのアイデア...
Gzip圧縮されたsvgがいくつかありましたが、出力にphpエラーがあり、このエラーメッセージが発生しました。 (gzipバイナリの途中にテキストがあったため。)phpエラーを修正して解決しました。
drupal サイトでこの問題が発生しましたが、このスレッドの他のソリューションはどれも役に立ちませんでした。いくつかのトラブルシューティングの後、local.settings.phpには次のようにスペースを含む終了タグがあることがわかりました。
<?php
$databases = array(
'default' =>
array (
'default' =>
array (
'driver' => 'mysql',
'database' => 'xxx',
'username' => 'xxx',
'password' => 'xxx',
'port' => '',
'Host' => 'xxx',
),
),
);
?>
Local.settings.phpを次のように更新して解決しました。
<?php
$databases = array(
'default' =>
array (
'default' =>
array (
'driver' => 'mysql',
'database' => 'xxx',
'username' => 'xxx',
'password' => 'xxx',
'port' => '',
'Host' => 'xxx',
),
),
);
ここで「?>」PHPタグを閉じる必要はありません。終了タグを使用することを選択した場合、その後に文字/空白がないことを確認する必要があります。
これを引き起こす悪いJavaバグがあります。 https://bugs.Java.com/view_bug.do?bug_id=JDK-8189789
今朝、私にとってこの問題の原因を理解した少しのダミーの瞬間がありました。
奇妙なことに、FirefoxとChromeの両方でリクエストが失敗していましたが、Fiddler Web Debugger経由でアクセスしようとしても機能していました。
私にとって問題は、プロジェクトのPHPファイルの1つに文字を誤って入力したことです。プロジェクトの変更をGitで確認するまで、これに気付きませんでした。
私の場合は、m<?php runMyProgram(); ?>
でした。
Mを消去すると、再び機能し始めました。
システムをReviveにアップグレードするときにもこの問題が発生しました。 GZIPをオンにした後、問題が解決しないことがわかりました。さらに調査した結果、アップグレード後にファイル権限が正しくないことがわかりました。単純な再帰的なchmodがトリックを行いました。
私の場合、Apacheでプロキシする必要があるIISに新しいアプリケーションを追加すると発生しました。
コンテンツを取得するには、ProxyHTMLEnable On
をProxyHTMLEnable Off
に設定する必要がありました。 (いくつかのjsコードがほとんどのエラーを引き起こしたように見えますが、これにより少なくとも何か解決することができました。)
IISはページコンテンツContent-Encoding: gzip
を送信しています
<Proxy "http://192.168.1.1:81">
ProxyHTMLEnable On #> change this to Off
ProxyHTMLURLMap ... ...
</Proxy>