qdPM Symfony 1.4 500内部服务器错误 - 空响应标头名称,中止请求

时间:2017-08-09 16:46:41

标签: php apache debugging http-headers symfony-1.4

我在使用PHP 7.0.6和apache 2.2.x以及MariaDB 5.5.x的Centos 6.7服务器上使用qdPM v9.0(来自qdpm / core / apps / qdPM / config / app.yml)超过一年现在没有任何问题。 它似乎正在使用传统的Symfony 1.4。

我尝试安装Let的加密SSL证书,并将此升级的Apache / httpd安装到2.2.15,PHP或MariaDB版本没有变化。

在安装SSL证书后重启httpd时,突然出现500内部服务器错误,httpd错误日志显示:

{{1}}

此外,这不是SSL / Apache的错误配置,因为其他子域上的其他应用程序继续正常工作,无论是否使用加密SSL证书。

除了一些德国讨论建议使用PHP 5.3之外,谷歌没有帮助: https://www.php.de/forum/webentwicklung/php-frameworks/1508593-installation-symfony-framework

  

Symfony 1 geht nur mit maximal PHP 5.3 ... Deswegen sagte ich doch hol dir Symfony 3 !!!

我多次清除缓存。 我删除了所有Let的加密SSL配置以及恢复的旧自签名SSL证书,并将Apache配置恢复到之前的工作状态。

由于我们每天都进行备份,因此我甚至还在几个小时前恢复了整个代码备份。

这肯定有效。

我仍然得到相同的错误,并且没有关于如何调试它的线索/提示。 Symfony日志记录文档适用于其当前版本,而不适用于1.4

可能导致此问题的原因是什么?

如何启用调试,以便找到错误"清空响应标题名称"正在创建,以便我可以修补它?

3 个答案:

答案 0 :(得分:8)

我修改了这个功能,它的工作原理是:(php 7.0 +)

第407行

... / core / lib / vendor / symfony / lib / response / sfWebResponse.class.php

/** * 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); }

答案 1 :(得分:0)

我能够将问题追溯到已发送的标题

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

值出现问题。

qdPM 9.0在PHP7上运行正常一年多,直到Ubuntu 16.04的Apache 2更新出现。

然而,我发现了这个问题:

E_WARNING: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in 
.../core/lib/vendor/symfony/lib/response/sfWebResponse.class.php on line 409

但我没有得到旧的界限:

return 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替换,现在它工作正常。也许我们会在这里得到更新如何正确解决它。

答案 2 :(得分:0)

此版本也可以正常使用:

svn merge .../accos_2.1.3_ludz/... .../accos_2.1.3b_ludz/... --dry-run