Помилка HTTP 500 Internal server error причини і рішення - все про комп'ютери



При поганій системної конфігурації,робота серверу може піти наперекосяк,і тоді Hypertext Transfer Protocol (HTTP) показує повідомлення про помилку.Зокрема,повідомлення про помилку «HTTP 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 знаходиться в цьому каталозі.


    # Різні правила перезапису.

    RewriteEngine on

    #Якщо ваш сайт працює на VirtualDocumentRoot http://example.com/,
    # розкоментуйте наступний рядок:
    RewriteBase / <-видалити хеш (#)


    4 — помилки PHP


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


    5 — погане зміст configure.php


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