![Ubuntu 20.04 LTS,无法从 PHP 7.2.2 升级到 PHP 8.0](https://linux22.com/image/945694/Ubuntu%2020.04%20LTS%EF%BC%8C%E6%97%A0%E6%B3%95%E4%BB%8E%20PHP%207.2.2%20%E5%8D%87%E7%BA%A7%E5%88%B0%20PHP%208.0.png)
我已认真遵循以下来源提供的指南:从 PHP 7 升级到 8和如何在 Ubuntu 20.04 上安装 PHP 8。不幸的是,当我运行该命令时php -v
得到了以下输出:
root@hp-HP-ProBook-6560b:~/parallel# php -v
PHP 7.2.2 (cli) (built: Mar 21 2022 15:00:11) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
root@hp-HP-ProBook-6560b:~/parallel#
令人困惑的是,当我尝试从浏览器访问 localhost 时,会显示较新的 PHP 版本,但在 CLI 上显示的是较旧的 PHP 版本。我打算使用仅适用于 PHP 8.0 的 parallels 扩展。
来自浏览器的 localhost 屏幕截图,显示了新版本的 PHP:
我被困在这里:
root@hp-HP-ProBook-6560b:~/parallel# sudo ./configure --host=armv7l --target=armv7l --enable-ssl-crtd --with-openssl
configure: WARNING: unrecognized options: --enable-ssl-crtd, --with-openssl
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /usr/bin/sed
checking for armv7l-cc... no
checking for armv7l-gcc... no
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... armv7l-unknown-none
checking target system type... armv7l-unknown-none
checking for PHP prefix... /usr/local
checking for PHP includes... -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib
checking for PHP extension directory... /usr/local/lib/php/extensions/no-debug-non-zts-20170718
checking for PHP installed headers prefix... /usr/local/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... re2c
checking for re2c version... 1.3 (ok)
checking for gawk... no
checking for nawk... nawk
checking if nawk is broken... no
checking whether to enable parallel support... yes, shared
checking whether to enable parallel coverage support... no
checking whether to enable parallel developer build flags... no
checking PHP version... configure: error: parallel requires PHP 8.0+
我也尝试过这些命令:
$ sudo apt-get purge php7.*
$ sudo apt-get autoclean
$ sudo apt-get autoremove
然而,php -v
继续返回php 7.2.2
。
如何在命令行上正确安装 PHP 8.0?
在尝试第一个建议的解决方案时,我得到了以下信息,如所附的 CLI 屏幕截图所示:
- 尝试建议的解决方案后,仍然得到相同的结果。我想知道为什么 cli 输出版本 7.2.2,但当我尝试清除它时,得到的响应是未找到包。那么命令 php -v 如何以及在哪里得到安装的 php 版本为 7.2.2 而不是新安装的版本 8.0 的结果。参见下面的屏幕截图:-
答案1
该update-alternatives
工具可能对您有用,因为您将能够设置要使用的特定版本。
就是这样:
如果尚未完成,请打开终端(或通过 SSH 连接到服务器)
检查可用的 PHP 版本:
update-alternatives --list php
你可能会看到类似这样的内容:
/usr/bin/php7.2 /usr/bin/php7.4 /usr/bin/php8.0
如果您看到多个选项,则可以通过以下选项设置首选版本
--config
:sudo update-alternatives --config php
这应该会给你类似这样的结果:
There are 3 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php7.4 74 auto mode 1 /usr/bin/php7.2 72 manual mode 2 /usr/bin/php7.4 74 manual mode 3 /usr/bin/php8.0 80 manual mode Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/bin/php7.2 to provide /usr/bin/php (php) in manual mode
按下3或与您想要运行的版本相对应的键
验证版本是否正确:
php -v
您现在应该看到 PHP 8.0 已激活。