Ошибка 500 “Internal Server Error”

25.03.2020

Возникает, когда не получается запустить скрипт, размещенный вами на сервере. Также причиной могут быть ошибки в скрипте или загрузка неправильной инструкции в файле .htaccess. Причин может быть и больше. Но три приведенных самые распространенные. 

  1. Некорректная инструкция в файле .htaccess. Если ошибка была допущена в названии необходимой директивы или ее параметрах, то в файле error.log будет где-то такой формат ошибки: [Wed Apr 14 17:01:38 2004] [alert] [client 217.16.16.16] /home/uXXXXX/aaa.ru/www/.htaccess:Invalid command 'DrectoryIndex', perhaps mis-spelled or defined bya module not included in the server configuration. С определением главной ошибки в директиве вам подскажет сам веб-сервер, после чего ее останется только исправить. Здесь веб-сервер указал на то, что он не знаком с директивой DrectoryIndex. Все верно, потому есть DirectoryIndex. То есть здесь допущена опечатка.
  2. Ошибка 500 может возникать, когда идет обращение к скрипту на языке Perl, который находится в каталоге cgi-bin. Тогда стоит произвести проверку прав доступа к этому скрипту. Права должны быть 755 (rwxrx-rx). Если это не так, изменяются права 755 с помощью команды chmod 755 script.pl в unix shell. Также можно применить FTP. Права на скрипты строго устанавливаются в 755. Поэтому обязательно произведите проверку, тот ли режим передачи файлов по FTP вы задействовали, загружая скрипт на наш сервер. 
  3. Скрипты и любые текстовые файлы нужно передавать по FTP в текстовом режиме (ASCII). Если вы применяли двоичный режим передачи файлов (Binary), скорее всего скрипты не будут работать. Если вы произвели проверку корректности файлов, которые были установлены на файл скрипта, но ошибка осталась, потребуется изучение последних записей в файле error.log. На нем веб-сервер собирает все уведомления об ошибках. Потому вы сможете найти следующую строку: [Fri Apr  9 15:05:31 2004] [error][client 111.111.111.111] Premature end of script headers: /data/uXXXX/aaa.ru/www/site.com/script.php. Получив такую ошибку, нужно посмотреть, корректно ли скрипт выдает HTTP-заголовки. Ведь первым делом каждый скрипт печатает строку, где указан определенный Content-type. После этого всплывает конкретно то, что увидит пользователь (например, HTML-код). Строка для показа заголовка стандартного HTML-документа выглядит так: print "Content-type: text/html; charset=windows-1251\n\n.

Если в скрипте найдены ошибки, они исправляются в рамках соответствующей диагностики. После этого повторно произвести проверку синтаксиса скрипта.