【发布时间】:2022-01-13 23:04:42
【问题描述】:
我正在尝试更新我的服务器以使用 PHP8.1,但我最终禁用了 http/2,也无法弄清楚如何重新启用它并真正让 PHP8.1 运行。
我做的第一步是:
sudo a2dismod php7.4
sudo a2enmod php8.1
第二个命令与 mpm_event 发生冲突,所以我接着运行:
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
再次运行“sudo a2enmod php8.1”以及“sudo systemctl restart apache2”后,似乎还可以。
但是,每当我运行“php -v”时,它都会显示 CLI 为“8.1”,但在实时站点上使用“phpinfo()”仍会返回“7.4.26”。
我还运行了这些命令,这些命令都显示 8.1 当前正在运行:
sudo update-alternatives --config php
sudo update-alternatives --config phar
sudo update-alternatives --config phar.phar
sudo update-alternatives --config phpize
sudo update-alternatives --config php-config
在这一切之后,我注意到我的网页停止通过 http/2 提供服务。在尝试“sudo a2dismod mpm_prefork”以便我可以再次启用 mpm_event 时,它说它无法禁用 mpm_prefork,因为与 PHP 模块存在冲突。当我禁用 PHP 模块时,我可以禁用 mpm_prefork 并启用 mpm_event 但是我不会再有 PHP(我想?这一切都如此混乱......)
编辑:我尝试禁用 PHP 模块并启用 mpm_event,但它使网站不再工作,所以我恢复了这些更改。
为清楚起见,当我尝试“sudo a2dismod mpm_prefork”时,我收到此错误:
ERROR: The following modules depend on mpm_prefork and need to be disabled first: php8.1
如果有帮助,phpinfo() 表示我正在运行:
PHP Version 7.4.26
Server API FPM/FastCGI
Configuration File (php.ini) Path /etc/php/7.4/fpm
另外,我现在的 mods_enabled 文件夹中有 PHP8.1,我发誓在这之前根本没有 PHP 模块。
总而言之,我对服务器管理非常陌生,但我只是想在使用 http/2 时运行 PHP8.1(fpm 版本?),但我在绕圈子里跑来跑去,我也因意外禁用而退后了一步http/2.
编辑:我的问题基本上是三个部分:
- 为什么我禁用了 PHP8.1 模块后我的网站下线了?和, 如何防止这种情况再次发生?
- 如何安全地重新启用 mpm_event(以便 http/2 再次工作)?请记住,它似乎 仅当 PHP8.1 和 mpm_prefork 模块都存在时才可以选择 已禁用。
- 如何升级到 PHP 8.1-fpm?
如果一个答案可以提供步骤,让我自己从我自己挖的坑中挖出来,同时还启用 PHP8.1-fpm,那就太棒了。
哦,这很清楚;我目前的设置是:
- PHP8.1 和 mpm_prefork 模块已启用(mpm_event 已禁用)
- 直播网站使用的是PHP7.4-fpm,没有http/2
- PHP的CLI版本是PHP8.1
- 我没有安装 PHP8.1-fpm
【问题讨论】:
-
你正在使用 php-fpm 所以试试
a2disconf php7.4-fpm,a2enconf php8.1-fpmandsystemctl restart php-fpm -
谢谢 - 我会记住这一点,但我也想让 http/2 再次工作,不明白为什么网站在我最初的问题中的那一步出现故障。跨度>
-
您现在是否尝试禁用 php 模块?
-
我不想尝试,因为我担心网站会再次崩溃。如果我有一个完整的步骤列表和如何扭转它们的备份计划,我会尝试。