16
6月
2023
15:42

如何在 Ubuntu 22.04 “Jammy Jellyfish” 或 Linux Mint 21.1 “Vera” 中安装 PHP 7.0、PHP 7.1、PHP 7.2、PHP 7.3 或 PHP 7.4 并切换版本

16 6月 2023 15:42

在新版本的Ubuntu 22.04中,PHP旧版本的Ondrej存储库中的安装与困难有关。

背景

我想在PHP 7.4上的8.1中安装PHP版本的减少,但是在Ubuntu“ Jammy”(Linux Mint“ Vera”)的新鲜版本上很难。
在最近的版本中,php 8.1专门制作,在搜索APT-CACHE搜索PHP7时,没有什么。

添加开发人员存储库,我根据说明完成了团队:

sudo add-apt-repository ppa:ondrej/apache2

sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

错误
GPG:从服务器接收钥匙时故障:不可接受的URI

表演时

sudo apt update

发出错误:

W:Bug GPG:https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy inrelease:无法测试以下签名,因为没有打开的键:no_pubkey 4f4eaaeaae5267a6cc
E:尚未签署存储库“ https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy inrelease”。

W:Bug GPG:https://ppa.launchpadcontent.net/ondrej/php/php/ubuntu jammy inrelease:无法检查以下签名
E:尚未签署存储库“ https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy inrelease”。

我试图使用命令在系统中添加签名键,但已保留错误:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 4F4EA0AAE5267A6C
gpg --export 4F4EA0AAE5267A6C | sudo tee /etc/apt/trusted.gpg.d/php_ondrej.gpg > /dev/null

但是APT Update团队犯了错误,因为Ondrej的两个存储库都在系统中断开了连接,因为没有签名。 我没有找到Oandrej存储库的GPG键的GPG密钥韧带。 因此,无法执行sudo gpg -import命令name_fila.gpg。

在页面末尾的钥匙束 https://www.php.net/gpg-keys.php не помогла (sudo sudo gpg --import php-keyring.gpg), т.е. в файле gpg оказались ключи других разработчиков.

解决方案

有必要在源目录中打开文件以进行编辑:

cd /etc/apt/sources.list.d

我们看什么是

 ls ondrej*

结果:

ondrej-apache2-jammy.list ondrej-php-bionic.list ondrej-php-jammy.list

反过来,我们打开文件ondrej *。列表要在纳米编辑器中更改:

1)apache2 Web服务器的存储库Ondrej

sudo nano ondrej-apache2-jammy.list

更正第一行,删除与签名有关的文本。

曾是:
deb [arch=amd64 signed-by=/etc/apt/keyrings/ondrej-apache2-jammy.gpg] https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy main

它变成了:
deb https://ppa.launchpadcontent.net/ondrej/apache2/ubuntu jammy main

2)用于PHP版本的存储库

sudo nano ondrej-php-jammy.list

曾是:
deb [arch=amd64 signed-by=/etc/apt/keyrings/ondrej-php-jammy.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main

它变成了:
deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main

结果

sudo apt update

错误否 (在警告中“键”存储在legpasted.gpg keyring(/etc/apt/trusted.gpg)中,有关详细信息,请参见apt-key(8)中的dewredion部分。“我们不关注)

现在您可以安装PHP 7.4:

sudo apt install php7.4
sudo apt install php7.4-{cli,common,curl,zip,gd,mysql,xml,mbstring,json,intl}

如何将PHP版本从8.1转换为7.4,反之亦然?

php --version

PHP 8.1.2-1ubuntu2.11(CLI)(建立:2月22日2023 22:56:18)(NTS)

系统中的PHP切换是由命令进行的

sudo update-alternatives --config php

PHP替代方案有3个选项(提供/usr/bin/php)。

选择路径先验条件 ------------------------------------------------------------------------------------ * 0/usr/bin/php.default 100自动模式 1 /usr/bin/php.default 100 ручной режим 2 /usr/bin/php7.4 74 ручной режим 3 /usr/bin/php8.1 81 ручной режим 单击“输入”以免更改当前选择[*]或输入正确的号码: 按2时,PHP解释器将切换为7.4版。 php --version PHP 7.4.33(CLI)(建造:6月8日2023 15:23:32)(NTS) 切换PHP命令的另一种方法: ** 8.1-> 7.4 ** sudo update-alternatives --set php /usr/bin/php7.4 ** 7.4-> 8.1 ** sudo update-alternatives --set php /usr/bin/php8.1 ### PHP开关到Apache2 Web服务器 呢从07.2023开始的补充: ** php 7.4 apache2的模块必须提前安装:** sudo apt-get install libapache2-mod-php7.4 ** 8.1-> 7.4 ** sudo a2dismod php8.1 sudo a2enmod php7.4 ** 7.4-> 8.1 ** sudo a2dismod php7.4 sudo a2enmod php8.1 ### 考试 创建最简单的test.php文件,然后从Web服务器的浏览器的目标行打开它: 打开URL时,应获得phpinfo()函数。 在“配置文件(php.ini)路径”行中,完全符合php.ini文件,例如,解释器使用的当前版本将显示为7.4。 ### FastCGI关闭 可以通过控制台的命令检查php 8.1的被忽视的FPM模块版本: sudo systemctl status php8.1-fpm 就我而言,FPM启动并使用PHP 8.1(忽略Apache2中的PHP7.4模块的版本):
 php8.1 -fpm.service -PHP 8.1 FastCGI流程管理器
     Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-07-04 09:01:29 MSK; 38min ago
       Docs: man:php-fpm8.1(8)
    Process: 1411 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81>
   Main PID: 1207 (php-fpm8.1)
     Status: "Processes active: 0, idle: 2, Requests: 2, slow: 0, Traffic: 0req/sec" 
      Tasks: 3 (limit: 3408)
     Memory: 23.7M
        CPU: 254ms
     CGroup: /system.slice/php8.1-fpm.service
             ├─1207 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   "" >
             ├─1409 "php-fpm: pool www"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   "">
             └─1410 "php-fpm: pool www"   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""   ""
另外,当使用FastCGI(PHP-FPM)时,命令 **可见错误的版本8.1`echo phpinfo()`**;。 要制作7.4版,我关闭了Apache2 Test Server上的PHP-FPM模块,命令: sudo a2dismod actions alias proxy_fcgi setenvif 然后,确认关闭:“是的,我说的!” 完成Apache2服务器重新启动: sudo systemctl restart apache2 现在,phpinfo()显示了我需要的版本-7.4(而不是8.1): `Configuration File (php.ini) Path /etc/php/7.4/apache2` `Loaded Configuration File (none)` `Scan this dir for additional .ini files /etc/php/7.4/apache2/conf.d` --- _上一次更改:02.06.2025:替换GPG -Export -armor 4F4EA0AAE5267A6C | sudo apt -key添加 - 在GPG上 - Export 4F4EA0AAE5267A6C | sudo tee/tc/apt/trusted.gpg.d/php_ondrej.gpg>/dev/null _


相关出版物