2017-08-09 36 views
3

PHP 7.0のCentOS 6.7サーバーでqdpm/core/apps/qdPM/config/app.ymlのqdPM v9.0を使用しています。 6とapache 2.2.xとMariaDB 5.5.xを1年以上も問題なく使用しています。 これは、従来のSymfony 1.4を使用しているようです。qdPM Symfony 1.4 500内部サーバーエラー - 応答ヘッダー名が空で、要求が中止されました

Let's Encrypt SSL証明書をインストールしようとしましたが、Apache/httpdを2.2.15にアップグレードしました.PhotoやMariaDBのバージョンに変更はありません。

SSL証明書のインストール後にhttpdを再起動した際に

、突然、私は500内部サーバーエラーを取得し、httpdのエラーログには示しています

... 
[Wed Aug 09 14:55:22 2017] [error] [client x.x.x.x] Empty response header name, aborting request 
[Wed Aug 09 14:55:32 2017] [error] [client x.x.x.x] Empty response header name, aborting request 
... 

また、これは、SSL /のApacheの設定ミスではありませんので、他のサブ上の他のアプリ-domainsは、SSL証明書を暗号化するかどうかにかかわらず、正常に動作し続けます。 Googleは、いくつかのドイツの議論を除いて助けにはならない

はPHP 5.3を使用することを提案: https://www.php.de/forum/webentwicklung/php-frameworks/1508593-installation-symfony-framework

symfonyの1 gehtのヌールが最大PHP 5.3をMITの... Deswegen sagte ICH DOCH HOL DIR symfonyの3 !!!

キャッシュを数回クリアしました。 Let's Encrypt SSL設定と古い自己署名SSL証明書を復元し、Apacheの設定を以前の動作状態に復元しました。

私たちは毎日バックアップをとるため、数時間前からコードバックアップ全体を復元していました。

これは間違いなく機能しているはずです。

私はまだ同じエラーが発生し、どのようにデバッグするのかのヒントはありません。 Symfonyロギングのドキュメントは、現在のバージョンではなく、1.4用ではありません

この問題の原因は何ですか?

デバッグを有効にするにはどうすれば "空のレスポンスヘッダー名"というエラーがどこに作成されているのでしょうか?

答えて

0

私が送信され、ヘッダーに問題をダウン追跡することができました

core/lib/vendor/symfony/lib/response/sfWebResponse.class.php 
on line 357 

何かが値

と間違っているしかし、私は実際にこの問題を引き起こしているものは考えて、持っていません。 Ubuntu 16.04のapache2アップデートが来るまで、qdPM 9.0はPHP7上で1年以上にわたって正常に動作していました。

は、問題を発見した: E_WARNING:にpreg_replace():/ e修飾子はもはやsymfonyの/ libに/応答/ sfWebResponse.class.php/ にpreg_replace_callback代わりに使用して... /コア/ libに/ベンダー、サポートされています私は古い行を取得しません: 返信preg_replace( '/)(.)/e'、 '' - 'strtoupper(' \ 1 ') "、strtr(ucfirst(strtolower() $ name))、 '_'、 ' - '));

が機能するように変換されます。私が理解する限り、それはダッシュの後ろの文字を大文字に置き換えます。しかし、それをpreg_replace_callbackで動作させることはできません。

return preg_replace_callback('\-(.)', function($m) { return '-'.strtoupper($m[1]); } , strtr(ucfirst(strtolower($name)), '_', '-')); 

匿名機能はまったく呼び出されません。 preg replaceを完全に削除しましたが、今は正常に動作しています。多分それを正しく解決する方法をここで更新するつもりです。

+0

お返事ありがとうございます。とにかく、PHPバージョンを7.0から5.6に戻すことで問題を解決しました – site80443

6

私は、機能を変更し、それが動作します(PHP 7.0以降)

... /コア/ libに/ベンダー/ symfonyの/ libに/応答/ sfWebResponse.class.phpライン上の407

/** * Retrieves a normalized Header. * * @param string $name Header name * * @return string Normalized header */ protected function normalizeHeaderName($name) { $out = []; array_map(function($record) use (&$out) { $out[] = ucfirst(strtolower($record)); }, explode('-',$name)); return implode('-',$out); }

関連する問題