Вопрос или проблема
После обновления Ubuntu с 16.04 до 18.04, затем до 20.04 и, наконец, до версии 22.04, я получил эту ошибку:
Как я могу это исправить?
root@vmi155065:/etc/apache2/mods-enabled# sudo service apache2 status
× apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2022-05-01 17:27:12 CEST; 1 day 20h ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 621 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
CPU: 31ms
May 01 17:27:12 vmi155065.contaboserver.net systemd[1]: Starting The Apache HTTP Server...
May 01 17:27:12 vmi155065.contaboserver.net apachectl[636]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php7.4.load: Cannot >
May 01 17:27:12 vmi155065.contaboserver.net apachectl[621]: Action 'start' failed.
May 01 17:27:12 vmi155065.contaboserver.net apachectl[621]: The Apache error log may have more information.
May 01 17:27:12 vmi155065.contaboserver.net systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
May 01 17:27:12 vmi155065.contaboserver.net systemd[1]: apache2.service: Failed with result 'exit-code'.
May 01 17:27:12 vmi155065.contaboserver.net systemd[1]: Failed to start The Apache HTTP Server.
Я столкнулся с этой же проблемой, когда обновлял систему с Ubuntu 20 до 22. Я внес следующие изменения, чтобы это исправить. Эти команды отключают один модуль Apache (a2dismod) и включают другой (a2enmod).
sudo a2dismod php7.4
(Это версия PHP, которую вы использовали до обновления)sudo a2enmod php8.1
(Это версия PHP после обновления. Пожалуйста, проверьте точную версию, посмотрев в папке/etc/apache2/mods-available
. В моем случае я увидел версию php8.1 и сделал так, как указано в этой команде)sudo systemctl restart apache2
sudo apachectl configtest
Возможно, вы хотите узнать больше о командах a2dismod
и a2enmod
? Вот ссылка, которая может ответить на этот вопрос подробно a2dismod, a2enmod.
Я столкнулся с той же проблемой, и шаги, описанные в этой теме, помогли решить проблему.
Чтобы успешно установить PHP, сначала необходимо установить некоторые зависимости.
sudo apt install software-properties-common apt-transport-https
Это может быть разницей между вашими проблемами и тем, почему у меня всё работает. Этот шаг для добавления PPA репозитория от Ondřej Surý, который является известным разработчиком PHP и Debian и поддерживает его пакеты, а также пакеты Ubuntu.
sudo add-apt-repository ppa:ondrej/php -y
теперь обновите вашу систему… Теперь проверьте, поможет ли это:
sudo apt install php8.1 libapache2-mod-php8.1
перезагрузите:
sudo systemctl restart apache2
проверьте, работает ли это:
sudo systemctl status apache2
systemctl status apache2 \u25cf apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Thu 2022-06-02 13:13:11 EDT; 8s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 14432 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/S> Main PID: 14436 (apache2) Tasks: 6 (limit: 4622) Memory: 9.9M CPU: 52ms CGroup: /system.slice/apache2.service \u251c\u250014436 /usr/sbin/apache2 -k start \u251c\u250014437 /usr/sbin/apache2 -k start \u251c\u250014438 /usr/sbin/apache2 -k start \u251c\u250014439 /usr/sbin/apache2 -k start \u251c\u250014440 /usr/sbin/apache2 -k start \u2514\u250014441 /usr/sbin/apache2 -k start
Просто убедитесь, что mod php8.1 установлен, это сработало для меня.
sudo apt install libapache2-mod-php8.1
sudo apt install -y libapache2-mod-php7.4
Я установил libapache2-mod-php нужной версии PHP, и всё работает нормально
Ответ или решение
После обновления Ubuntu с версии 16.04 до 22.04, у вас возникла проблема с запуском Apache2. Основной причиной является синтаксическая ошибка при загрузке модуля PHP, которая возникла из-за того, что Apache пытается использовать устаревший модуль PHP. Для успешного решения этой проблемы следует выполнить несколько шагов, чтобы правильно настроить сервер.
Шаг 1. Отключение и включение PHP модулей
-
Отключение устаревшего модуля PHP:
Выполните команду:sudo a2dismod php7.4
Это отключит модуль PHP версии 7.4, которая была установлена в предыдущей версии Ubuntu.
-
Включение нового модуля PHP:
Определите текущую версию PHP, установленную в системе. Это можно сделать, проверив, какие модули доступны в папке/etc/apache2/mods-available
. Например, если у вас теперь установлена версия PHP 8.1, выполните команду:sudo a2enmod php8.1
-
Перезапуск Apache:
После изменения конфигурации необходимо перезапустить Apache:sudo systemctl restart apache2
Шаг 2. Проверка конфигурации
Чтобы убедиться, что конфигурация Apache корректна, выполните следующую команду:
sudo apachectl configtest
При отсутствии ошибок вы должны увидеть ответ "Syntax OK".
Шаг 3. Установка необходимых модулей
Если проблема остается, возможно, необходимы дополнительные модули для поддержки PHP. Убедитесь, что библиотека для работы с Apache2 установлена:
sudo apt install libapache2-mod-php8.1
Шаг 4. Обновление репозитория и установка PHP
Если все вышеуказанные шаги не помогли, добавьте PPA от известного разработчика PHP для установки последней версии PHP:
sudo apt install software-properties-common apt-transport-https
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.1
Заключение
После выполнения этих шагов попробуйте снова перезапустить Apache и проверьте его статус:
sudo systemctl status apache2
Apache должен успешно запуститься. Эти шаги должны помочь вам устранить проблему и обеспечить стабильную работу веб-сервера, поддерживающего актуальную версию PHP. Периодически проверяйте серверные обновления и модули, чтобы своевременно устранять возможные конфликты и поддерживать систему в актуальном состоянии.