Некоторые дистрибутивы уже начали переход на PHP 8. Новая версия PHP удаляет старую в результате чего веб-сервер может перестать работать из-за того, что указанные в конфигурации веб-сервера файлы отсутствуют или переименованы.
Связанная статья: Вышел PHP 8: обзор изменений языка
Примеры ошибок, с которыми вы можете столкнуться:
httpd: Syntax error on line 504 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf/mods-enabled/php.conf: Cannot load modules/libphp7.so into server: /etc/httpd/modules/libphp7.so: cannot open shared object file: No such file or directory
В ней говориться, что не найден файл /etc/httpd/modules/libphp7.so.
Другая ошибка, в которой говориться, что не найден файл /etc/httpd/conf/extra/php7_module.conf:
httpd: Syntax error on line 504 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf/mods-enabled/php.conf: Could not open configuration file /etc/httpd/conf/extra/php7_module.conf: No such file or directory
В некоторых дистрибутивах служба веб-сервера Apache называется apache2, а в некоторых httpd. Поэтому данная инструкция рассмотрит оба варианта.
Исправление «Cannot load modules/libphp7.so» когда служба веб-сервера названа httpd (Arch Linux, CentOS и их производные)
Чтобы просмотреть статус службы и ошибки, которые привели к её неработоспособности, выполните команду:
systemctl status httpd.service
Откройте конфигурационный файл /etc/httpd/conf/mods-enabled/php.conf:
sudo vim /etc/httpd/conf/mods-enabled/php.conf
Найдите в нём строку
LoadModule php7_module modules/libphp7.so
и замените её на:
LoadModule php_module modules/libphp.so
Затем найдите строку
Include conf/extra/php7_module.conf
и замените на:
Include conf/extra/php_module.conf
Перезапустите службу веб-сервера:
sudo systemctl restart httpd.service
и проверьте её состояние:
systemctl status httpd.service
Исправление «Cannot load modules/libphp7.so» когда служба веб-сервера названа apache2 (Debian, Ubuntu, Linux Mint, Kali Linux и их производные)
Чтобы просмотреть статус службы и ошибки, которые привели к её неработоспособности, выполните команду:
systemctl status apache2.service
Отключите модуль PHP 7.*:
a2dismod php7.4
Возможно, у вас другая версия PHP, начните набирать «a2dismod php» и используйте клавишу TAB для автодополнения:
Для включения PHP 8 используйте команду вида (используйте клавишу TAB для автодополнения):
a2enmod php8
Перезапустите службу веб-сервера:
sudo systemctl restart apache2.service
и проверьте её состояние:
systemctl status apache2.service
Связанные статьи:
- Как в PHP 8 показать все ошибки (94.7%)
- Как получить User Agent в PHP. Как настроить browscap.ini (88.8%)
- Как увеличить память и время для PHP скриптов (88.8%)
- Почему не работает код в <? и ?>. Как включить поддержку сокращённых тегов в PHP. Что означает <?= (88.8%)
- Как отключить определённые функции в PHP (88.8%)
- Решение пробем с ошибкой .htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration (RANDOM - 22.1%)