Одна из самых популярных и при этом не всегда логирующаяся ошибка apache2 - "Internal Server Error". В этой статье разберу возможные причины и решения из интернета и личного опыта. Иногда эта ошибка весьма не очевидна.
Все ситуации описаны для операционной системы Ubuntu Linux 22.10.
Ну и, конечно, первое, что вы должны сделать это попробовать перезапустить службу.
sudo systemctl restart apache2
Если это не помогло, то двигаемся дальше.
1. Конфигурация
1.1. Ошибка конфигурации веб-приложения
Прежде всего рекомендую сделать запрос к вашему сайту локально, прямо с сервера.
curl localhost:80
Если вы не видите "Internal Server Error", а видите html страницу, то 99% проблема в файлах конфигурации и настройках доступа.
Проверьте файл: /etc/apache2/sites-available/your_app.conf
где your_app.conf - название вашего файла конфирурации, либо стандартный conf файл - «000-default.conf»
Как он выглядит:
Строка «Require ip 127.0.0.1» говорит, о том, что разрешено подключение только с локального хоста.
Решение: замените строку «Require ip 127.0.0.1» на «Require all granted»
Так же «Require all granted» должна быть в /etc/apache2/apache2.conf
1.2. Старый конфигурационный файл
Возможно, создавая новый файл конфигурации веб-приложения он не был выбрал или включен.
Решение:
1. Выключаем стандартный файл конфигурации
2. Включаем свой
3. Перезагружаем apache2
a2dissite 000-default.conf
a2ensite your_app.conf
systemctl restart apache2
2. Права доступа
Проблема возникает тогда, когда права файлов вашего проекта не соответствуют ожидаемым.
2.1. Владелец файлов
Файлы вашего проекта не принадлежат пользователю www-data.
Решение:
sudo chown -R www-data:www-data your_project/
P.S. Случается так, что apache2 при установке не создаёт пользователя www-data, в этом нет ничего страшного, можно обойтись и без его создания. Права отлично функционируют и сайт работает.
2.2. Права файлов
Ошибка так же может возникать когда владелец установлен верно, но всё равно не имеет доступа к файлам из-за настроек прав доступа.
Решение:
sudo chmod -R 755 your_project/
2.3. Веб-приложение работает с файлами системы
"Internal Server Error" возникает, когда ваше веб-приложение взаимодействует с файлами системы у которых нет прав на исполнение. Звучит также странно как есть на самом деле, почему я не могу читать файлы у которых есть право на чтение? До сих пор не понимаю. Но проблема эта решается, если выдать файлам право на исполнение.
Решение:
sudo chmod -R 777 your_project/files/
3. Ошибка в коде вашего веб-приложения
Также частая ситуация, когда apache2 настроен правильно, но всё равно возникает эта нелогирующаяся ошибка "Internal Server Error", тогда следует проследить отрабатывает ли вообще ваше приложение.
Например, если оно не может подключиться к базе данных, то вы, всё равно, увидите "Internal Server Error". Стоит проверить верный ли пароль и есть ли доступ к базе данных. А возможно, что просто веб-приложение запустилось раньше базы данных, в этом случае поможет простая перезагрузка apache2.
Если ваше приложение взаимодействует с внешним ресурсом, и он оказывается не доступен или привышен лимит ожидания ответа, то вы снова увидите "Internal Server Error".
4. Переустановка apache2
Если вам не помогли все вышеуказаные действия, то возможно проблема с самим apache2, тогда нужно попробовать его переустановить:
sudo apt update
sudo apt install --reinstall apache2
Если вы не решили свою проблему, то вот еще возможные причины и направления для дальнейшего поиска.
Ошибка синтаксиса .htaccess. Если вы используете Apache в качестве веб-сервера, то, скорее всего, у вас есть .htaccess файл в корневом каталоге вашего сайта. Неверный синтаксис или несуществующая директива модуля может привести к ошибке 500.
Проблемы с плагинами и темами. Если вы используете WordPress или аналогичную CMS, ошибка 500 может появиться после обновления или изменения плагина или темы.
Проблемы с сервером. Поврежденная файловая система или исчерпанная память могут привести к ошибке 500.
Модули Node.js. Если у вас есть сайт на основе Node.js, обновление модулей может вызвать внутреннюю ошибку сервера 500.
Довольно часто вредоносный код, внедряемый на ваш сайт, приводит к ошибке 500.
Несовместимый модуль. Загрузка несовместимого модуля PHP или Apache вызывает ошибку 500.
P.S. Надеюсь, кому-то помог. Удачи.
Комментарии (15)
scronheim
05.04.2023 02:52+7sudo chmod -R 777 your_project/files/
после этой строки дальше можно не читать, да и до этой строки особо то читать и нечего
rhaport
05.04.2023 02:52+5переустановка apache2 - это вишенка на торте
mmMike
05.04.2023 02:52+3Чего вы так жестоко. Протереть стекла и попинать колеса - это первое что нужно сделать, если машина не заводится.
можно еще в бубен постучать.
И только если вообще все не помогает, то можно включить логирование и посмотреть первопричину проблемы. Но это же не спортивно! Методом тыка же гораздо интереснее искать.
iig
05.04.2023 02:52Строка «Require ip 127.0.0.1» говорит, о том, что разрешено подключение только с локального хоста.
Во первых, эту строку кто-то написал с какой-то целью. Можно у него спросить.
Во вторых, ошибку 500 вы так не получите ;) Максимум 4хх.
sden77
05.04.2023 02:52+1Чтобы не было проблем с правами доступа, запускайте веб-сервер под рутом! /s
pae174
05.04.2023 02:52+1Абсолютно все советы
а) вредные
б) к 500 не имеют вообще никакого отношения.
CrazyElf
05.04.2023 02:52+2Однако самый классический совет
rm -rf /
почему-то так и не был упомянут. Ну, чтобы уж наверняка.
aceman1209
05.04.2023 02:52Несовместимый модуль. Загрузка несовместимого модуля PHP или Apache вызывает ошибку 500.
Это чуть ли не единственный пункт, который относится к 500 ошибке. Еще парочка есть в том же разделе, но суть такая же. Практически все остальное - выдаст что угодно, кроме 5хх ошибок.
chmod -R 777
Еще бы апач под рутом запустить, чтобы вообще ко всей тачке доступ был в случае взлома
DarkHost
05.04.2023 02:52+1Прочитал подпись: "Заинтерисован всеми сферами деятельности." - все сразу понял.
remzalp
777 права просто чудесно, дырявая дырень
Если зашел вопрос про WordPress, то еще и про конфиг php рассказать. display_startup_errors например