Вопрос или проблема
У меня свежая установка Ubuntu 24.10, и у меня установлен PHP8.3.
> lsb_release -a
Нет доступных модулей LSB.
ID дистрибьютора: Ubuntu
Описание: Ubuntu 24.10
Версия: 24.10
Кодовое имя: oracular
> php -v
PHP 8.3.11 (cli) (собран: 30 сент 2024 12:07:44) (NTS)
Авторские права (c) Группа PHP
Zend Engine v4.3.11, Авторские права (c) Zend Technologies
с Zend OPcache v8.3.11, Авторские права (c), от Zend Technologies
с Xdebug v3.2.0, Авторские права (c) 2002-2022, от Дерика Ретханса
Из-за работы мне нужно использовать PHP 8.2, PHP 8.1, PHP 8.0 и PHP 7.4.
Когда я пытаюсь установить их через apt-get
, он не может найти пакеты, и после добавления Ondrej PPA, запустив apt update
, я вижу ошибку Ошибка: Репозиторий 'https://ppa.launchpadcontent.net/ondrej/php/ubuntu oracular Release' не имеет файла Release.
Как я могу установить старые версии PHP на своей установке Ubuntu 24.10?
sudo add-apt-repository --remove ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/php
sudo sed -i 's/oracular/noble/g' /etc/apt/sources.list.d/ondrej-ubuntu-php-oracular.sources
sudo apt update
sudo apt install php8.2 php8.1 php8.0 php7.4
Вы можете установить PPA Ondrej и переписать его тег suites
, чтобы apt install
мог получить пакеты из версии Ubuntu 24.04 (Noble).
Вы, вероятно, можете пропустить этот шаг, но на всякий случай, удалите PPA Ondrej, если он уже добавлен, и добавьте его снова;
sudo add-apt-repository --remove ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/php
Теперь откройте файл источников Ondrej и измените версию с oracular
на noble
;
sudo sed -i 's/oracular/noble/g' /etc/apt/sources.list.d/ondrej-ubuntu-php-oracular.sources
Запустите apt update
sudo apt update
Когда apt update
будет успешным, вы можете начать устанавливать старые пакеты PHP!
sudo apt install php8.2 php8.1 php8.0 php7.4
Результат:
> lsb_release -a
Нет доступных модулей LSB.
ID дистрибьютора: Ubuntu
Описание: Ubuntu 24.10
Версия: 24.10
Кодовое имя: oracular
> php8.2 -v
PHP 8.2.24 (cli) (собран: 27 сент 2024 04:05:15) (NTS)
Авторские права (c) Группа PHP
Zend Engine v4.2.24, Авторские права (c) Zend Technologies
с Zend OPcache v8.2.24, Авторские права (c), от Zend Technologies
> php8.1 -v
PHP 8.1.30 (cli) (собран: 27 сент 2024 04:07:54) (NTS)
Авторские права (c) Группа PHP
Zend Engine v4.1.30, Авторские права (c) Zend Technologies
с Zend OPcache v8.1.30, Авторские права (c), от Zend Technologies
> php8.0 -v
PHP 8.0.30 (cli) (собран: 27 сент 2024 04:11:42) ( NTS )
Авторские права (c) Группа PHP
Zend Engine v4.0.30, Авторские права (c) Zend Technologies
с Zend OPcache v8.0.30, Авторские права (c), от Zend Technologies
> php7.4 -v
PHP 7.4.33 (cli) (собран: 27 сент 2024 04:14:06) ( NTS )
Авторские права (c) Группа PHP
Zend Engine v3.4.0, Авторские права (c) Zend Technologies
с Zend OPcache v7.4.33, Авторские права (c), от Zend Technologies
Если вам нужно выполнить composer с конкретной версией PHP, вы можете сделать следующее;
php7.4 /usr/local/bin/composer update
Если команда composer не найдена, и вы можете выполнить ее с простым composer
, вы можете найти полный путь к composer, используя which composer
. Используйте этот путь в вышеуказанной команде, и вы выполните composer с указанной версией PHP.
Я использую composer и у меня много пакетов. Поэтому мне понадобились следующие пакеты;
sudo apt install php7.4-dom php7.4-dev php7.4-mbstring php7.4-tokenizer php7.4-xml php7.4-xmlwriter php7.4-curl php7.4-gd php7.4-soap -y
sudo apt install php8.0-dom php8.0-dev php8.0-mbstring php8.0-tokenizer php8.0-xml php8.0-xmlwriter php8.0-curl php8.0-gd php8.0-soap -y
sudo apt install php8.1-dom php8.1-dev php8.1-mbstring php8.1-tokenizer php8.1-xml php8.1-xmlwriter php8.1-curl php8.1-gd php8.1-soap -y
sudo apt install php8.2-dom php8.2-dev php8.2-mbstring php8.2-tokenizer php8.2-xml php8.2-xmlwriter php8.2-curl php8.2-gd php8.2-soap -y
плохая идея обновлять дистрибутив до беты на рабочей машине, попробуйте использовать предыдущую версию дистрибутива PPA Noble, это должно быть:
https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease
Ответ или решение
Установка старых версий PHP на Ubuntu 24.10
Если вы столкнулись с проблемой установки устаревших версий PHP (например, 8.2, 8.1, 8.0 и 7.4) на свежей установке Ubuntu 24.10 и не можете найти необходимые пакеты через apt-get
, следуйте приведенным ниже инструкциям. Ваша текущая версия PHP, как указано, — это PHP 8.3, но с помощью репозитория Ondřej Surý вы сможете установить более старые версии PHP.
Шаг 1: Удалите старый репозиторий Ondřej
Если вы уже добавили PPA, лучше его удалить перед добавлением нового экземпляра:
sudo add-apt-repository --remove ppa:ondrej/php
Шаг 2: Добавьте PPA Ondřej
Теперь добавьте репозиторий Ondřej с помощью следующей команды:
sudo add-apt-repository ppa:ondrej/php
Шаг 3: Измените файл источника
Поскольку для Ubuntu 24.10 (кодовое имя oracular
) репозиторий Ondřej не имеет релизного файла, нам нужно изменить ссылку на ближайшую версию, которая доступна — 24.04 (кодовое имя noble
). Для этого выполните команду:
sudo sed -i 's/oracular/noble/g' /etc/apt/sources.list.d/ondrej-ubuntu-php-oracular.sources
Шаг 4: Обновите список пакетов
После изменения репозитория обновите список пакетов командой:
sudo apt update
Если обновление прошло успешно и не возникло ошибок, вы можете приступить к установке.
Шаг 5: Установка необходимых версий PHP
Теперь вы можете установить старые версии PHP следующей командой:
sudo apt install php8.2 php8.1 php8.0 php7.4
Шаг 6: Проверка установленных версий PHP
После завершения установки проверьте установленные версии PHP с помощью команд:
php8.2 -v
php8.1 -v
php8.0 -v
php7.4 -v
Установка дополнительных расширений PHP
Если вам необходимо установить дополнительные модули для используемой версии PHP, используйте следующие команды для каждой нужной версии. Например, для PHP 7.4:
sudo apt install php7.4-dom php7.4-dev php7.4-mbstring php7.4-tokenizer php7.4-xml php7.4-xmlwriter php7.4-curl php7.4-gd php7.4-soap -y
Аналогично, установите модули для других версий PHP:
sudo apt install php8.0-dom php8.0-dev php8.0-mbstring php8.0-tokenizer php8.0-xml php8.0-xmlwriter php8.0-curl php8.0-gd php8.0-soap -y
sudo apt install php8.1-dom php8.1-dev php8.1-mbstring php8.1-tokenizer php8.1-xml php8.1-xmlwriter php8.1-curl php8.1-gd php8.1-soap -y
sudo apt install php8.2-dom php8.2-dev php8.2-mbstring php8.2-tokenizer php8.2-xml php8.2-xmlwriter php8.2-curl php8.2-gd php8.2-soap -y
Заключение
Следуя этим шагам, вы сможете успешно установить более старые версии PHP на вашу систему Ubuntu 24.10. Убедитесь, что после установки вы перепроверяете версии PHP, чтобы гарантировать корректную работу вашего ПО. При необходимости также можете использовать разные версии PHP для выполнения скриптов, указывая конкретную версию при вызове через командную строку.
Если у вас есть дополнительные вопросы или сомнения, не стесняйтесь задавать их!