Должен ли update-alternatives поддерживать согласованную версию PHP?

Вопрос или проблема

Я занимаюсь разработкой PHP на локальном хосте и использую update-alternatives для переключения между версиями PHP, а именно 7.4 и 8.2 в моем случае. Это работает нормально … ЗА ИСКЛЮЧЕНИЕМ …
, когда apache отображает результаты phpinfo() в браузере, версия всегда 7.4, даже если я только что переключился на 8.2 с помощью update-alternatives и проверил, что php -v в bash дает мне 8.2.

Я полагаю, это так потому, что версия php, которую использует apache2, определяется ссылками в /etc/apache2/mods-enabled, и ссылки там php7.4.conf и php7.4.load, то есть они не изменяются с помощью update-alternatives, чтобы отразить текущую активную версию PHP в системе.

Я думаю, update-alternatives должен обновлять их, когда пользователь выбирает версию PHP. Может кто-нибудь подсказать, как добавить запрос на изменение update-alternatives, чтобы отразить это?

Вам нужна 1 дополнительная строка в ваших командах. Чтобы переключить PHP для Apache:

sudo a2dismod php7.4
sudo a2enmod php8.2
sudo update-alternatives --set php /usr/bin/php8.2
sudo service apache2 restart

Замените 8.2 на 7.4, если хотите сделать обратное переключение.

Возможно, лучше создать для этого скрипт.

Ответ или решение

Проблематика управления версиями PHP на локальном сервере, особенно в контексте использования системы update-alternatives, представляет собой важную тему для разработчиков. Часто возникает диссонанс между версиями PHP, которые видны при вызове php -v в командной строке, и теми, которые отображает Apache, делая ситуацию особенно запутанной.

Проблема

Вы, как IT-специалист, столкнулись с ситуацией, когда использование update-alternatives для переключения между версиями PHP на вашем localhost не изменяет конфигурацию Apache. В результате Apache продолжает использовать старую версию PHP, несмотря на изменение в командной строке. Это связано с тем, что апачи использует модули, находящиеся в /etc/apache2/mods-enabled, и, например, модули php7.4.conf и php7.4.load остаются не измененными системой update-alternatives, когда вы меняете версию PHP.

Решение

Выявленная проблема указывает на необходимость деактивации старых и активации новых модулей Apache при изменении версии PHP. Это можно выполнить с помощью следующих команд:

sudo a2dismod php7.4
sudo a2enmod php8.2
sudo update-alternatives --set php /usr/bin/php8.2
sudo service apache2 restart

Этот процесс требует ручного вмешательства и следования пошаговой инструкции для корректного функционирования Apache с новой версией PHP.

Рекомендации

  • Автоматизация: Создание скрипта, который выполнит вышеупомянутые команды автоматически, значительно облегчит процесс переключения между версиями PHP.
  • Обратная связь: Для улучшения функционала update-alternatives, стоит соответствующим образом обратиться к их команде разработки. Это можно сделать через платформы разработки ПО, такие как GitHub или Launchpad, где обсуждаются функциональные улучшения и запросы пользователей.

Заключение

Поддержание согласованности между используемой версией PHP на уровне системы и веб-сервера имеет критическую важность для разработчиков. Адекватное использование update-alternatives в сочетании с автоматизацией замены версий через Apache обеспечит эффективную работу PHP-аппликаций. Создание скрипта и взаимодействие с сообществом разработчиков помогут оптимизировать этот процесс.

Это решение не только решает актуальную задачу, но и улучшает вашу продуктивность как разработчика, позволяя сосредоточиться на создании кода, а не на управлении инфраструктурой.

Оцените материал
Добавить комментарий

Капча загружается...