2.4.3.5. Помилка 500 Internal Server Error

Достовірно визначити причину виникнення помилки 500 можливо шляхом аналізу Error-лога сайту. Також у виявленні джерела проблеми може допомогти технічна перевірка сайту.

Часто помилка 500 пов'язана з неправильно вказаними директивами у файлі .htaccess, який знаходиться в каталозі вашого сайту. Відредагувати цей файл можна за допомогою вбудованого редактора файл-менеджера або будь-якого FTP-клієнта.

Якщо було встановлено, що проблема пов'язана з файлом .htaccess, то вам слід спробувати внести наступні зміни:

  • Options +FollowSymLinks — потрібно замінити на Options +SymLinksIfOwnerMatch.
  • Options All -Indexes — потрібно замінити на Options -Indexes.
  • +ExecCGI — потрібно видалити.

На хостингу не використовується модуль Apache mod_version, тому якщо в .htaccess присутні блоки з директивами IfVersion, їх також слід видалити, залишивши лише вміст блоків, призначених для Apache 2.4.

Закоментувати директиви у файлі .htaccess можна, поставив на початку рядка символ # .

Увага!

Не рекомендується встановлювати права вище 640 для файлів і 750 для каталогів, оскільки це може призвести до помилки 500.

Якщо у Error-логу сайту присутня помилка «Script file is writable by others», то вам необхідно відновити стандартні права на файли за інструкцією або вручну, вказавши для файлів права 640.

Така ситуація може виникати під час відновлення з резервної копії або завантаження файлів нового сайту.

У більшості випадків цю директиву достатньо закоментувати, оскільки вона використовується для увімкнення стиснення на основі Content-Type, а на нашому хостингу за стиснення відповідає nginx і до Apache найчастіше ці запити не доходять.

У форматі Apache 2.2 директива виглядає так:

FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html

В Apache 2.4 ця ж директива виглядає так:

FilterProvider  COMPRESS  DEFLATE "%{CONTENT_TYPE} = 'text/html'"

Виправити ситуацію можна шляхом зміни синтаксису директив зі старого на новий.

Коментарі в кінці рядка можуть викликати помилку «…htaccess: No comments are allowed here».

У новіших версіях Apache для написання коментаря потрібен весь рядок. Тобто, коли ви додаєте символ #, щоб створити коментар, він повинен бути першим непорожнім символом у рядку. Якщо ви додасте будь-які непорожні символи перед знаком решітки, отримаєте помилку 500.

Наприклад, будь-який з цих коментарів є правильним:

# this is a comment
     ## this is another comment
                  ### multiple pound signs are fine

Приклади неприпустимих коментарів, що призводять до помилки:

ExpiresActive on # this will trigger an error
RedirectMatch 403 /spamhole/ # this will trigger an error
# this will
           trigger an error

У .htaccess при редагуванні сторонніми редакторами можуть бути записані невидимі BOM-символи, через які і виникає помилка. Для усунення проблеми слід відкрити файл у якомусь редакторі, пересохранити його в чистій кодуванні UTF-8 і завантажити назад на хостинг.

Зміст

    (1)

    Коментарі

    energoresurslviv
    Як вивести список файлів в папці?
    На іншому хостингу я заливаю в папку файл htaccess з такими двома рядками:

    Options +Indexes +Includes -FollowSymLinks
    IndexOptions +FancyIndexing

    Відповідно коли браузером в ту папку заходжу, отримую список файлів які в тій папці лежать.

    Тут отримую помилку 500.

    Підкажіть, що саме на що виправити щоб вивести список файлів?
    verliber
    Спробуйте залишити лише `Options +Indexes -SymLinksIfOwnerMatch IndexOptions +FancyIndexing` у два рядки та видалити інше. Також зверніть увагу, якщо в директорії є індексний файл (за замовчуванням це index. php\hmtl) то буде відкриватись він. У ваших директивах використовується непідтримуваний параметр FollowSymLinks, який краще замінити на SymLinksIfOwnerMatch.