Php apache http 500

Ошибка http 500 internal server error

В ошибке обычно указано какой веб-сервер её отдал. При появлении ошибки нужно выяснить какой веб-сервер обрабатывает запросы и проверить его логи.

Проверить какой веб-сервер обрабатывает запросы к порту 80 можно так:

Далее рассматриваем случай когда ошибку вернул веб-сервер Apache. Он чаще всего используется для обработки скриптов на PHP.

Возможные причины ошибки 500:

  1. неверный синтаксис файла .htaccess. Ошибка в этом случае прямо указана в логе Apache. (например, директивы Options -MultiViews или php_value и php_flag при использовании PHP в режиме Fastcgi )
  2. слишком долгая работа скрипта. В настройках веб-сервера установлены лимиты при превышении которых будет отдаваться ошибка 500
  3. недостаточно высокое значение параметра memory_limit в файле php.ini
  4. программные ошибки, формирующие некорректные заголовки HTTP

Ошибка http 500 internal server error может быть вызвана разными причинами. При появлении ошибки нужно включить логирование Apache (если используется Apache), также включить логирование ошибок РНР. Если в error_log Apache информации не будет, искать их стоит в программном коде, здесь и окажутся полезными логи РНР.

Логирование РНР включается в php.ini, так же задается путь к логу. При использовании PHP-FPM директива задается в /etc/php-fpm.d/www.conf. Дополнительно лучше включить и вывод ошибок на экран, для этого нужно добавить display_errors = on

Читайте также:  Темы на тему css

Пример записей о причинах ошибки ‘http 500 internal server error’ в логе

При нехватке скрипту выделяемой для него памяти в логе РНР будут содержаться сообщения вида:

«Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in /home/example.com/www/wp-includes/pomo/streams.php on line 110»

В этом случае нужно увеличить значение memory_limit в файле с настройками php.ini

Когда веб-сервер отдает ошибку записи появляются не только в error_log. Также сообщения будут в логе доступа, в который пишется информации при каждом посещении сайта.

Пример записи приведен на скриншоте (запись из лога nginx, он согласно конфигурации тестовой машины объединен с логом Apache). Там можно увидеть код ответа 500.

Ошибка http 500 internal server error

У записи есть ip адрес клиента, user agent, временная метка. По ним можно найти те же самые запросы в логе ошибок и точно установить какой запрос соотносится с ошибкой.

Причиной ошибки может быть высокая нагрузка на сервер. Читайте о том как её выявить и что делать если нагрузка выше нормы.

Источник

Ловим и исправляем «Internal Server Error» — apache2

Одна из самых популярных и при этом не всегда логирующаяся ошибка apache2 — «Internal Server Error». В этой статье разберу возможные причины и решения из интернета и личного опыта. Иногда эта ошибка весьма не очевидна.

Все ситуации описаны для операционной системы Ubuntu Linux 22.10.

Ну и, конечно, первое, что вы должны сделать это попробовать перезапустить службу.

sudo systemctl restart apache2

Если это не помогло, то двигаемся дальше.

1. Конфигурация

1.1. Ошибка конфигурации веб-приложения

Прежде всего рекомендую сделать запрос к вашему сайту локально, прямо с сервера.

Если вы не видите «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

Строка «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

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

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. Надеюсь, кому-то помог. Удачи.

Источник

Почему возникает ошибка 500 Internal Server Error

В данной статье мы рассмотрим наиболее вероятные причины возникновения ошибки 500 “Internal Server Error”. Причины указаны в порядке вероятности возникновения.

  1. Использование в файлах .htaccess недопустимых на нашем хостинге конструкций, например Options -MultiViews или php_value и php_flag . Вы можете открыть файл .htaccess текстовым редактором и найти строки, в начале которых используются указанные конструкции. Найденные строки можно удалить или добавить # в начале. Файл .htaccess может находиться в корневом каталоге вашего сайта — на том же уровне, что и файлы index.php или index.html или robots.txt.
  2. Скрипт пытается получить больше памяти, чем ограничено параметром memory_limit . Обычно достаточно увеличить этот параметр в панели управления. Увеличивать стоит постепенно, с шагом в 16 — 32 Мб, пока ошибка не пропадет. Новые настройки PHP вступают в силу в течение 3-5 минут.
  3. В панели управления или в php.ini включены не совместимые друг с другом расширения php. Например, одновременное включение eaccelerator и APC, либо eaccelerator и XCache почти наверняка будет приводить к ошибке Segmentation Fault и, как следствие, к ошибке Internal Server Error на сайте.
  4. Если вы редактировали какие либо файлы сайта в ОС Windows, то при сохранении в файл могли добавиться не совместимые с unix-форматом символы переноса строки. Для корректной работы необходимо использовать совместимые с unix-форматом переносы строк. Например, в Notepad++ этот параметр можно настроить в меню “Правка” -> “Формат конца строк” -> “Преобразовать в UNIX-формат”.
  5. Слишком долгая работа скрипта (может быть связано, например, с выгрузкой товаров на сайте, либо другими долгими запросами). Если веб-сервер не получает никакого ответа от скрипта в течение 120 секунд, скрипт считается зависшим и его работа принудительно завершается с выдачей ошибки 500. Изменить это ограничение в индивидуальном порядке на виртуальном хостинге нельзя. В качестве решения вы можете запускать выполнение скрипта, разбив данные на части, либо через cron либо напрямую через ssh-соединение.
  6. Скрипт возвращает HTTP-заголовки, которые веб-сервер не может распознать и не понимает как интерпретировать.

Включение лога ошибок apache

Однозначно определить источник ошибки поможет включение лога ошибок. Для этого потребуется зайти в панель управления https://panel.netangels.ru/virtualhosts/ , слева от названия сайта кликнуть на иконку с тремя горизонтальными полосками и выбрать “Журнал ошибок”. Когда ошибки возникнут, то в домашнем каталоге на сервере появится файл вида sitename.ru-error.log, где sitename.ru — имя сайта, для которого вы включили лог ошибок.

Логи ошибок сохраняются в обычные текстовые файлы, их можно просмотреть подключившись к хостингу по протоколу FTP. Инструкция по подключению.

Так же может быть полезно включить лог php ошибок поставив галочку напротив пункта error.log и нажав кнопку сохранить. Лог ошибок будет сохранен в файле log/php-errors.log.

Источник

Оцените статью