Одна из самых популярных и при этом не всегда логирующаяся ошибка 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»

Как он выглядит:

/etc/apache2/sites-available/your_app.conf
/etc/apache2/sites-available/your_app.conf

Строка «Require ip 127.0.0.1» говорит, о том, что разрешено подключение только с локального хоста.

Решение: замените строку «Require ip 127.0.0.1» на «Require all granted»
Так же «Require all granted» должна быть в /etc/apache2/apache2.conf

/etc/apache2/apache2.conf
/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.

Папка проекта (your_project) не принадлежит пользователю www-data
Папка проекта (your_project) не принадлежит пользователю 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)


  1. remzalp
    05.04.2023 02:52
    +4

    777 права просто чудесно, дырявая дырень

    Если зашел вопрос про WordPress, то еще и про конфиг php рассказать. display_startup_errors например


  1. scronheim
    05.04.2023 02:52
    +7

    sudo chmod -R 777 your_project/files/

    после этой строки дальше можно не читать, да и до этой строки особо то читать и нечего


  1. rhaport
    05.04.2023 02:52
    +5

    переустановка apache2 - это вишенка на торте


    1. mmMike
      05.04.2023 02:52
      +3

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

      можно еще в бубен постучать.

      И только если вообще все не помогает, то можно включить логирование и посмотреть первопричину проблемы. Но это же не спортивно! Методом тыка же гораздо интереснее искать.


    1. iig
      05.04.2023 02:52

      Да, опичатка. Надо было "переустановка windows".


      1. sshikov
        05.04.2023 02:52

        А может комп на новый сменить?


  1. iig
    05.04.2023 02:52

    Строка «Require ip 127.0.0.1» говорит, о том, что разрешено подключение только с локального хоста.

    Во первых, эту строку кто-то написал с какой-то целью. Можно у него спросить.

    Во вторых, ошибку 500 вы так не получите ;) Максимум 4хх.


  1. sden77
    05.04.2023 02:52
    +1

    Чтобы не было проблем с правами доступа, запускайте веб-сервер под рутом! /s


  1. pae174
    05.04.2023 02:52
    +1

    Абсолютно все советы

    а) вредные

    б) к 500 не имеют вообще никакого отношения.


  1. CrazyElf
    05.04.2023 02:52
    +2

    Однако самый классический совет rm -rf / почему-то так и не был упомянут. Ну, чтобы уж наверняка.


    1. loved_by_sky Автор
      05.04.2023 02:52
      -3

      Забыл, бро


  1. aceman1209
    05.04.2023 02:52

    Несовместимый модуль. Загрузка несовместимого модуля PHP или Apache вызывает ошибку 500.

    Это чуть ли не единственный пункт, который относится к 500 ошибке. Еще парочка есть в том же разделе, но суть такая же. Практически все остальное - выдаст что угодно, кроме 5хх ошибок.

    chmod -R 777

    Еще бы апач под рутом запустить, чтобы вообще ко всей тачке доступ был в случае взлома


  1. DarkHost
    05.04.2023 02:52
    +1

    Прочитал подпись: "Заинтерисован всеми сферами деятельности." - все сразу понял.


    1. loved_by_sky Автор
      05.04.2023 02:52

      ????


  1. NotSlow
    05.04.2023 02:52
    +1

    Почему для авто или оружия требуют лицензию, а vps'ки дают каждому...