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 і завантажити назад на хостинг.

Зміст

    Коментарі

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

    Options +Indexes +Includes -FollowSymLinks
    IndexOptions +FancyIndexing

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

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

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