Статьи

Способи вирішення помилки HTTP 500 Internal server error

При поганій системної конфігурації, робота сервера може піти наперекосяк, і тоді Hypertext Transfer Protocol (HTTP) показує повідомлення про ошібках.В зокрема, повідомлення про помилку «HTTP 500 Internal server error» зазвичай відбувається, коли адміністратор сайту намагається завантажити файл на сайт.Для адміністраторів, які управляють сервером, така ситуація не повинна бути проігнорована, так як страждають конфігураційні файли сістеми.Чтоби виправити цю помилку, потрібні зусилля команди, і вони починаються з кінцевого користувача, повідомленням адміністратора сервера і за анчівается хостингом сайту, що б прийняти мери.500 Internal Server Error-це загальне повідомлення про помилку, що видається за відсутності більш конкретних відповідних повідомлень.

500 Internal Server Error-це загальне повідомлення про помилку, що видається за відсутності більш конкретних відповідних повідомлень

Як правило, для вирішення цієї проблеми необхідно скористатися допомогою лог-файлів, які розташовані в такому розташуванні:
=> / Var / log / message
=> / Var / log / httpd / error_logs (/ var / log / lighttpd / error_log / var / log / httpd / error_log)

Так що ви навіть можете бути здивовані, чому ваш PHP-скрипт видає внутрішню помилку сервера 500.Ета помилка виникає тільки через програмного забезпечення веб-сервера.Однако, переглянувши журнали можна не виявити безліч деталей.Ета проблема може бути викликана:

  • Потворним php-cgi-скриптом
  • Неприпустима директива в .htaccess або інших config file
  • Обмеження, накладені файлової системи і програмним забезпеченням сервера (наприклад, файл php журналу розмір 10 Мб)
  • Відсутня php.ini (або не може прочитати файл php.ini)

У більшості випадків вона є недійсною директивою .htaccess.Однако недавно я натрапив на web server w / o / etc / php.ini. Я давно налаштував цей сервер (Apache в chroot jail). Тому потрібно зберігати два файли один за межами сервера, а інший усередині сервера:
=> /Etc/php.ini
=> /Chroot/etc/php.ini <- його немає

Багато скрипти можуть відкрити цей файл на льоту, щоб отримати правильні директиви конфігурації. Якщо цей файл не знайдений, ви отримаєте повідомлення про помилку 500. Знадобилося кілька днів, щоб з'ясувати цю проблему.

Причини та рішення:

1 - система безпеки (mod_security)

mod_security-це система безпеки, яка працює на webserver для виявлення типової хакерської діяльності, якщо вони намагаються зробити щось на сервере.Она шукає структури, широко використовувані хакерськими скриптами і слова, і якщо правило спрацьовує, вона відправляє помилку 500, і навіть може тимчасово заблокувати IP-адреса відвідувача.
У mod_security є правила, які будуть перераховані в журналах помилок * і * в mod_security журналі.

2 - suexec

Якщо сервер налаштований на використання php_suexec (який призначений для забезпечення безпеки трохи краще в тому, як зберігаються файли і дозволу управляються з PHP скриптами), то вам не дозволять встановити будь-які файли або папки в рівні дозволів «777» ( «world-writable ). Максимально допустимий в таких випадках, як правило, рівень дозволів 755.
У цій ситуації, якщо ви встановите на папку рівень дозволу «777», сервер видає 500 Internal Server Error і блокує будь-які скрипти або файли в цій папке.Заблокірованние папки будуть перераховані в журналах.Такім чином, в цьому випадку ви повинні використовувати рівень дозволу 755 замість 777 при читанні інструкції, які передбачають використання рівня дозволів «777».

3 - помилки синтаксису .htaccess .htaccess обмежень, що накладаються main server configuration

Якщо ваш сервер налаштований на обмеження використання певних директив в файлах .htaccess, але ви використовуєте щось недозволене, то буде спрацьовувати "500 Internal Server Error", і ваш сайт буде недоступний, поки ви не вирішите проблему.
Точні правила будуть записані в журнали, наприклад всередині каталогу subdomian, переконайтеся в тому, що .htaccess знаходиться в цьому каталозі.

# Різні правила перезапису.
<IfModule mod_rewrite.c>
RewriteEngine on
++++++++++++++++++++++
# Якщо ваш сайт працює в VirtualDocumentRoot на http://example.com/,
# Розкоментуйте наступний рядок:
RewriteBase / <-удалить хеш (#)

4 - помилки PHP

Іноді, коли PHP-скрипт виявляє помилку, або через закінчення часу очікування або синтаксична проблема, або щось ще гірше, як логічну проблему, він * може * видати тригер 500 внутрішня помилка сервера. Він може видавати цю помилку не завжди, але може.

5 - погане утримання configure.php

Якщо URL-адреси або шляху, або що-небудь ще, знаходяться у вашому файлі configure.php це інформація для іншого сервера, або неправильно для * вашого * server, то для багатьох як не дивно, можуть виникнути проблеми, в тому числі , можливо і помилка 500. Однак, як правило, це будуть дуже різні сімптоми.Просто переконайтеся, що Ви не скопіювали файли configure.php з одного сервера на інший, навіть localhost.

Новости