Вопрос или проблема
Моя установка apache2 поломана. Я не могу установить php модуль для apache2. Как установить php модуль для Apache2?
Что я пробовал:
$ sudo apt reinstall libapache2-mod-php
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
linux-headers-5.11.0-44-generic linux-hwe-5.11-headers-5.11.0-44 linux-image-5.11.0-44-generic
linux-modules-5.11.0-44-generic linux-modules-extra-5.11.0-44-generic
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 3 not upgraded.
Need to get 2.836 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://aw.archive.ubuntu.com/ubuntu focal/main amd64 libapache2-mod-php all 2:7.4+75 [2.836 B]
Fetched 2.836 B in 1s (4.938 B/s)
dpkg: warning: files list file for package 'firefox-mozilla-build' missing; assuming package has no files
currently installed
(Reading database ... 333225 files and directories currently installed.)
Preparing to unpack .../libapache2-mod-php_2%3a7.4+75_all.deb ...
Unpacking libapache2-mod-php (2:7.4+75) over (2:7.4+75) ...
Setting up libapache2-mod-php (2:7.4+75) ...
и
$ sudo apt purge libapache2-mod-php
$ sudo apt install libapache2-mod-php
Модуль не установлен:
$ ls /etc/apache2/mods-available
access_compat.load cgi.load log_debug.load ratelimit.load
actions.conf charset_lite.load log_forensic.load reflector.load
actions.load data.load lua.load remoteip.load
alias.conf dav_fs.conf macro.load reqtimeout.conf
alias.load dav_fs.load md.load reqtimeout.load
allowmethods.load dav.load mime.conf request.load
asis.load dav_lock.load mime.load rewrite.load
auth_basic.load dbd.load mime_magic.conf sed.load
auth_digest.load deflate.conf mime_magic.load session_cookie.load
auth_form.load deflate.load mpm_event.conf session_crypto.load
authn_anon.load dialup.load mpm_event.load session_dbd.load
authn_core.load dir.conf mpm_prefork.conf session.load
authn_dbd.load dir.load mpm_prefork.load setenvif.conf
authn_dbm.load dump_io.load mpm_worker.conf setenvif.load
authn_file.load echo.load mpm_worker.load slotmem_plain.load
authn_socache.load env.load negotiation.conf slotmem_shm.load
authnz_fcgi.load expires.load negotiation.load socache_dbm.load
authnz_ldap.load ext_filter.load proxy_ajp.load socache_memcache.load
authz_core.load file_cache.load proxy_balancer.conf socache_redis.load
authz_dbd.load filter.load proxy_balancer.load socache_shmcb.load
authz_dbm.load headers.load proxy.conf speling.load
authz_groupfile.load heartbeat.load proxy_connect.load ssl.conf
authz_host.load heartmonitor.load proxy_express.load ssl.load
authz_owner.load http2.conf proxy_fcgi.load status.conf
authz_user.load http2.load proxy_fdpass.load status.load
autoindex.conf ident.load proxy_ftp.conf substitute.load
autoindex.load imagemap.load proxy_ftp.load suexec.load
brotli.load include.load proxy_hcheck.load unique_id.load
buffer.load info.conf proxy_html.conf userdir.conf
cache_disk.conf info.load proxy_html.load userdir.load
cache_disk.load lbmethod_bybusyness.load proxy_http2.load usertrack.load
cache.load lbmethod_byrequests.load proxy_http.load vhost_alias.load
cache_socache.load lbmethod_bytraffic.load proxy.load xml2enc.load
cern_meta.load lbmethod_heartbeat.load proxy_scgi.load
cgid.conf ldap.conf proxy_uwsgi.load
cgid.load ldap.load proxy_wstunnel.load
Для меня libapache2-mod-php
не включал установленную версию php, по какой-то причине.
Поэтому мне пришлось запустить a2enmod
и посмотреть, что у меня доступно. В моем случае, у меня были такие версии:
php7.0 php7.2 php7.3 php7.4 php8.0 php8.1
Я перепроверил с установленной версией apt list php | grep installed
. В моем случае, у меня установлено:
php/focal,focal,now 2:8.1+92+ubuntu20.04.1+deb.sury.org+2 all [installed]
Что означает, у меня версия 8.1 (с патчами от ubuntu, но это неважно для этого).
Поэтому мне просто нужно было запустить a2enmod php8.1
, и проблема была решена!
Ответ или решение
Для решения проблемы с установкой модуля PHP для Apache2 следует понять несколько ключевых шагов, которые помогут вам успешно активировать нужный модуль. Ниже приведено руководство на русском языке в формате FOREST:
F – Факт: Вы столкнулись с проблемой установки PHP модуля для Apache2, несмотря на попытки переустановки и очистки пакета libapache2-mod-php
.
O – Описание ситуации: Вы уже пытались выполнить переустановку через команды sudo apt reinstall libapache2-mod-php
и sudo apt purge libapache2-mod-php
, но при проверке содержимого каталога /etc/apache2/mods-available
отсутствуют какие-либо php модули.
R – Решение:
-
Проверка установленных пакетов PHP:
Убедитесь в том, какая версия PHP установлена в вашей системе, выполнив команду:apt list php | grep installed
Это покажет вам все установленные версии PHP.
-
Активирование модуля PHP для Apache:
- Используйте команду
a2enmod
для включения нужного модуля. Например, если у вас установлена версия PHP 8.1, выполните:sudo a2enmod php8.1
- После активации перезагрузите Apache для применения изменений:
sudo systemctl restart apache2
- Используйте команду
-
Проверка состояния:
- Убедитесь, что модуль PHP успешно активирован, используя:
apache2ctl -M | grep php
Это покажет загруженные модули Apache и подтвердит наличие PHP.
- Убедитесь, что модуль PHP успешно активирован, используя:
E – Эффект: Эта процедура гарантирует, что Apache начнет правильно обрабатывать PHP-скрипты, активировав нужную версию PHP модуля.
S – Специфика:
- Ошибки и решения: Если после выполнения всех шагов PHP все еще не работает, проверьте логи Apache, чтобы выявить потенциальные ошибки:
sudo tail -f /var/log/apache2/error.log
- Дополнительные библиотеки: Убедитесь, что у вас установлены все необходимые библиотеки и расширения PHP, специфичные для вашего проекта или веб-приложения.
T – Итог: Установка и активация корректного модуля PHP в Apache2 обеспечивает соответствующую обработку PHP-скриптов на сервере. Подробно соблюдайте приведенные инструкции, и ваша конфигурация будет корректно работать.
Эти шаги помогут вам без проблем активировать нужный модуль и решить возникшие сложности. Удачи в настройке вашего веб-сервера!