Php HTTP2已启用,但站点由HTTP1提供服务

Php HTTP2已启用,但站点由HTTP1提供服务,php,apache,ubuntu,http2,Php,Apache,Ubuntu,Http2,回答:我运行的是Apache 16.04,没有注意到更新到18.04的要求。 对于其他有类似问题的人,以下是我遇到的几个问题: 有人在评论中提到的,是有用的。尽管如此,这一步并没有奏效:“sudoa2dismodphp7.2”。错误在于php7.2不是一个模块。忽略此步骤不会导致任何问题 从16.04升级到18.04的do release升级步骤一直处于中止状态。在林诺德的帮助下 最后,我所有的Wordpress网站都暂时崩溃了,因为新安装的mysql不是默认的。使用apt-get安装php7

回答:我运行的是Apache 16.04,没有注意到更新到18.04的要求。 对于其他有类似问题的人,以下是我遇到的几个问题:

  • 有人在评论中提到的,是有用的。尽管如此,这一步并没有奏效:“sudoa2dismodphp7.2”。错误在于php7.2不是一个模块。忽略此步骤不会导致任何问题
  • 从16.04升级到18.04的do release升级步骤一直处于中止状态。在林诺德的帮助下
  • 最后,我所有的Wordpress网站都暂时崩溃了,因为新安装的mysql不是默认的。使用apt-get安装php7.2-mysql修复了这个问题
希望这对某些人有用,而且你所经历的压力比我小

原始问题:

我用过

a2enmod http2
在我的服务器上启用http2

但是,我的站点仍在http1.1上加载。在阅读了几个StackOverflow的答案后,我想我已经把这个问题缩小到了mpm_prefork与http2不兼容的范围

当我禁用mpm_预工作并启用mpm_事件,然后尝试重新启动服务器时,我遇到以下问题:

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
Apache2cl configtest显示了以下内容,并建议我重新编译PHP:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
阅读本文后,我禁用了mpm_事件并重新启用了mpm_预工作,这使我能够重新启动Apache,但根本问题仍然存在


我如何正确地配置PHP以允许http2按预期工作?

首先解决我的愚蠢问题;你在用HTTPS我想是吧。。。是的,服务器上的所有站点都使用HTTPS协议。h2协议已添加到所有站点。会议也已添加。您看到了吗?建议运行PHP FPM,而不是作为Apache模块运行—引用:“HTTP/2与Apache的prefork多处理模块不兼容。但是,prefork基本上似乎已经过时,因此切换到更现代的模块(即事件MPM)不会有什么坏处。反过来,需要将PHP模块从mod_PHP更改为php7.x-FPM。”我知道,以下步骤不起作用:“sudoa2encophp7.2-fpm”给出错误“confphp7.2-fpm不存在”php-fpm不是apache模块。你确定它和a2enconc一起工作吗?