Apache 500 internal server error: apache — Как убрать 500 ошибки и включить ошибки PHP.

php — Apache 500 Internal Server Error

Вопрос задан

Изменён 7 лет 3 месяца назад

Просмотрен 5k раз

При переносе с одного сервера на другой сайт перестал работать. Сервер отдает 500 ответ. Причем на этом же сервере есть другие сайты на php, которые прекрасно работают.

В логах следующее:

[Tue Aug 11 20:50:59.040653 2015] [cgi:error] [pid 10354] [client 127.0.0.1:51431] End of script output before headers: php

В чем может быть причина?

  • php
  • apache

5

  1. для начала создайте какой-нибудь тестовый файл типа

    <?php echo 123;
    

    назовите его, например,

    test123. php, поместите в docroot сайта и обратитесь к нему из браузера: http://ваш.сайт/test123.php.

    если строка 123 отобразится, значит, скорее всего, проблемы в содержимом php-скриптов.

  2. проблема может возникать, например, потому, что какой-нибудь из загружающихся в самом начале скриптов (index.php, какие-нибудь подключаемые конфигурационные файлы) был «криво исправлен» и в него попал «мусор».

    например, какие-нибудь bom-ы в самое начало, или пробелы — до стартовых символов <?php, или после конечных символов ?>.

    bom-ы (и «лишние» пробелы) можно увидеть, например, с помощью команды:

    $ hexdump -C путь/к/файлу | less
    
  3. с чего начинается обработка запроса, например, к корню? с index.php? добавьте в начале скрипта (после

    <?php) строку вроде

    echo случайное. число; exit;
    

    если получите вывод в виде этого случайного.числа, передвигайте эту строку дальше (и глубже — в подключаемые файлы), пока не найдёте «виновника» (файл и строку), который генерирует ошибку.

    чтобы чуть ускорить процесс, после теста на начале файла можно сразу вставить строку в конец, а потом (если будет ошибка) возвращаться «назад» методом «половинного деления».

1

Настройки сервера проверяйте. Файл .htaccess попробуйте удалить или очистить. Вероятно, что в нём может быть проблема.

С подобной ошибкой вот что еще говорят:

Это может означать, что файл в формате DOS. Такое может случиться, если вы закачали файл по ftp с компьютера под управлением Windows в бинарном режиме. (Вообще не стоит использовать ftp.)

(http://ru.perlmaven.com/perl-cgi-script-with-apache2)

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как исправить 500 Internal Server Error в Apache

Много раз Apache выдает 500 Internal Server Error по разным причинам. В этой статье мы рассмотрим, что такое внутренняя ошибка сервера 500, почему вы получаете это сообщение об ошибке и как исправить внутреннюю ошибку сервера 500 в Apache localhost, CPanel и других системах, таких как Ubuntu, CentOS, Windows.

 

Что такое 500 Internal Server Error в Apache

Apache выдает 500 Internal Server Error при возникновении ошибки на стороне сервера, которая не позволяет Apache обработать запрос и вернуть правильный ответ. Это может быть связано с различными причинами, такими как ошибочный код, неадекватные права доступа к файлам, отсутствующие файлы, на которые есть ссылки в коде, и т. д. Существует несколько способов исправить внутреннюю ошибку сервера 500 в Apache. 9Как установить mod_deflate в Apache .

 

1. Жесткое обновление страницы

Самый простой способ исправить внутреннюю ошибку сервера 500 в Apache — просто обновить страницу. Иногда вы можете запрашивать страницу при перезапуске сервера. В таких случаях вы получите 500 внутренних ошибок.

Иногда сервер может быть перегружен запросами и не иметь ресурсов для обработки вашего запроса.

В обоих этих случаях вы можете выполнить аппаратное обновление, чтобы заставить браузер подключиться к серверу и загрузить последний контент веб-сайта. Вы можете сделать это, нажав

  • Windows: Ctrl + F5
  • Mac: Apple + R или Cmd + R
  • Linux: F5

Дополнительная информация: как исправить ошибку 504 Gateway Timeout Error в Apache

 

2. Изучите журналы сервера

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

Каждый журнал сервера записывает запрошенный URL-адрес вместе с возвращенным ответом. Среди самых последних запросов ищите те, которые вернули код ответа 500.

Это покажет, какой сценарий вызывает проблему. После того, как вы идентифицировали сценарий, откройте браузер и снова запросите эту страницу, чтобы убедиться, что он действительно вызывает ошибку в журнале сервера.

 

3. Проверьте свой сценарий

Затем проверьте, правильно ли работает ваш сценарий.

Ваш сценарий в нужном месте? Вы его правильно назвали? Сопоставление/маршрутизация вашего URL-адреса ссылается на правильный скрипт?

Если ваш сценарий ссылается на какой-либо файл, то пути к файлам указаны правильно? Если они ссылаются на какую-либо функцию/программу, правильно ли вы на них ссылаетесь?

Дополнительная информация: как исправить ошибку 502 Bad Gateway в Apache

 

0007

Изменяли ли вы в последнее время какие-либо права доступа к файлам/папкам? Вы создали новый файл/папку в своем коде?

Если это так, то вы можете столкнуться с внутренней ошибкой сервера 500 из-за неправильных прав доступа к файлам/папкам. Как правило, файлы должны иметь разрешение пользователя 644, а папки — разрешение 755. Вы можете использовать FileZilla (Windows) или CHMOD (Linux) для изменения прав доступа к файлам.

Посмотрите на разрешения других файлов/папок в вашем коде и соответствующим образом обновите разрешения для вашего файла/папки.

Дополнительная информация: Как увеличить время ожидания запроса в Apache

 

5. Проверьте файл .htaccess

Если вы настроили перезапись URL-адресов или перенаправление URL-адресов, возможно, вы использовали файл .htaccess. Убедитесь, что вы правильно настроили mod_rewrite .

Также используйте сторонний инструмент для проверки синтаксиса перезаписи URL и убедитесь, что он правильный.

Дополнительная информация: как включить mod_rewrite в Apache

 

6. Увеличьте время ожидания сценария

Если ваш сервер Apache зависит от другого внешнего скрипта/функции для обработки запроса, и время ожидания истекло, тогда Apache вернет 500 Internal Server error.

Поэтому увеличьте значения времени ожидания этих внешних сценариев, чтобы они поддерживали соединение и возвращали правильный ответ.

 

Надеюсь, приведенные выше советы помогут вам исправить внутреннюю ошибку сервера 500 в Apache.

 

Ubiq упрощает визуализацию данных за считанные минуты и их мониторинг на информационных панелях в режиме реального времени. Попробуйте сегодня!

Похожие посты:

  • Об авторе

О Ubiq
Ubiq — это мощная платформа для мониторинга и создания отчетов для малого и среднего бизнеса. Создавайте информационные панели, диаграммы и отчеты для своего бизнеса за считанные минуты. Быстро получайте информацию из данных. Попробуйте бесплатно сегодня!

django — Apache выдает ОШИБКУ 500: Внутренняя ошибка сервера при GET из локального хоста/внутренней сети

У меня есть рабочий сервер с apache и django установлен с использованием mod_wsgi .

Приложение django имеет REST API, который предоставляет некоторую информацию при отправке запроса GET.

Это всегда отлично работало на сервере разработки, где мы запускали django с помощью manage. py на экране. Теперь мы создали рабочий сервер с apache под управлением django, но этот API возвращает Error 500 при запуске wget с localhost или других машин в той же сети (используя 192.168.Х.Х ИП).

Вот вывод wget:

 ~$ wget localhost:80/someinfo
--2020-04-02 16:26:59-- http://localhost/someinfo
Разрешение локального хоста (localhost)... 127.0.0.1
Подключение к локальному хосту (localhost)|127.0.0.1|:80... подключено.
HTTP-запрос отправлен, ожидается ответ... 500 Internal Server Error
2020-04-02 16:26:59 ОШИБКА 500: Внутренняя ошибка сервера.
 

Кажется, что соединение установлено успешно, поэтому я думаю, что это не проблема Apache. Ошибка исходит из ответа API.

Ошибка в apache error.log выглядит так:

 127.0.0.1 - - [02/Apr/2020:14:24:36 +0000] "GET /someinfo HTTP/1.1" 500 799 "-" "Wget/1.19.4 (линукс-гну)"
 

вопрос: какое число после 500? Иногда 799, а иногда 803.

Но если запрос выполняется с использованием общедоступного IP-адреса сервера извне (т.е. из браузера), API работает нормально, и я вижу правильную информацию.

Я уже проверил разрешенные хосты django, и он принимал локальный хост, а 192.168.X.X IP другой машины. В конце концов я оставил django settings.py следующим образом:

 #ALLOWED_HOSTS = ['localhost', '127.0.0.1', '192.168.1.101']
ALLOWED_HOSTS = ['*']
 

Примечание. 192.168.1.101 — это машина, которая пытается выполнить запрос GET. Конечная цель всего этого — сделать запрос GET из скрипта Python, работающего на этой машине (который уже работает, если django запускается через manage.py).

Мой apache.conf :

 <Виртуальный хост *:80> Веб-мастер администратора сервера@localhost
 #Корень Документа /var/www/html
 Псевдоним /static/home/myuser/myproject/django/static_root <Каталог /home/myuser/myproject/django/static_root> Требовать все предоставленные  <Каталог /home/myuser/myproject/django/myproject_django> <Файлы wsgi.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *