2.4.3.5. Помилка 500 Internal Server Error
Достовірно визначити причину виникнення помилки 500 можливо шляхом аналізу Error-логу сайту. Також у виявленні джерела проблеми може допомогти технічна перевірка сайту.
Директиви в .htaccess
Часто помилка 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
.
Така ситуація може виникати при відновленні з резервної копії або завантаження файлів нового сайту.
Використання старого синтаксису директиви FilterProvider
У більшості випадків цю директиву досить закомментувати, оскільки вона використовується для увімкнення стиснення на основі 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
BOM-символи
В .htaccess при редагуванні сторонніми редакторами можуть бути записані невидимі BOM-символи, через які і виникає помилка. Для усунення проблеми слід відкрити файл в будь-якому редакторі, перезберегти його в чистому кодуванні UTF-8 і завантажити назад на хостинг.
На іншому хостингу я заливаю в папку файл htaccess з такими двома рядками:
Options +Indexes +Includes -FollowSymLinks
IndexOptions +FancyIndexing
Відповідно коли браузером в ту папку заходжу, отримую список файлів які в тій папці лежать.
Тут отримую помилку 500.
Підкажіть, що саме на що виправити щоб вивести список файлів?