Apache ошибка internal server error

Apache Web Server gives 500 Internal Server Error message in case of issues. Here's how to fix 500 internal server error in Apache.

Many times Apache gives 500 Internal Server Error due to various reasons. In the article, we will look at what is 500 internal server error, why do you get this error message and how to fix 500 Internal Server Error in Apache localhost, CPanel other systems like Ubuntu, CentOS, Windows.

Apache gives 500 Internal Server Error when there is a server-side error that prevents Apache from processing a request and returning a proper response. This can be due to various reasons such as faulty code, inadequate file permissions, missing files referenced in code, etc. There are multiple ways to fix 500 internal server error in Apache.

Bonus Read : How to Install mod_deflate in Apache

How to Fix 500 Internal Server Error in Apache

Here are the steps to fix 500 internal server error in Apache on localhost, CPanel, PHP, Ubuntu, and other systems.

1. Hard Refresh the Page

The simplest way to fix 500 internal server error in Apache is to simply refresh the page. Sometimes you may be requesting a page when the server is being restarted. In such cases, you will get 500 internal error.

Sometimes, the server may be overloaded with requests and doesn’t have resources to process your request.

In both these cases, you can do a hard refresh to force the browser to connect to server and download the latest website content. You can do this by pressing

  • Windows: Ctrl + F5
  • Mac: Apple + R or Cmd + R
  • Linux: F5

Bonus Read : How to Fix 504 Gateway Timeout Error in Apache

2. Examine Server Logs

Many times, you get 500 internal server error only for one page or a few pages but not all pages on your website. So it is important to check your server log to find the requests causing this issue.

Every server log records the requested URL along with the returned response. Among the most recent requests, look for the ones that have returned 500 response code.

This will tell which script is causing the issue. Once you have identified the script, open your browser and request this page again to confirm that it is indeed raising the error in server log.

3. Examine your script

Next, check if your script is working properly.

Is your script in the right place? Have you named it correctly? Is your URL mapping/routing referencing the right script?

If your script refers any file, then are the file paths correct? If they refer any function/program, have you referenced them correctly ?

Bonus Read : How to Fix 502 Bad Gateway Error in Apache

4. Check File/Folder Permissions

Did you modify any file/folder permission recently? Did you create a new file/folder in your code?

If so then you might be seeing 500 internal server error due to wrong file/folder permissions. Typically, files should have 644 user permission while folders should have 755 permission. You can use FileZilla (Windows) or CHMOD (Linux) to change file permissions.

Look at the permissions of other files/folders in your code and update the permission for your file/folder accordingly.

Bonus Read : How to Increase Request Timeout in Apache

5. Check .htaccess file

If you have set up URL rewrites or URL redirection, then you may have used .htaccess file. Make sure you have setup mod_rewrite correctly.

Also use a third-party tool to check URL rewrite syntax, and ensure they are correct.

Bonus Read : How to Enable mod_rewrite in Apache

6. Increase Script Timeout

If your Apache server depends on another external script/function to process a request and it times out, then Apache will return 500 Internal Server error.

So increase the timeout values of those external scripts so that they maintain the connection and return a proper response.

Hopefully, the above tips will help you fix 500 internal server error in Apache.

Ubiq makes it easy to visualize data in minutes, and monitor in real-time dashboards. Try it Today!

Related posts:

  • About Author

mm

This is an Ancient answer from 2013, back when PHP was new and security wasn’t an issue:

Here in the future it’s a security risk to dump errors to screen like this. You better not be doing this in any production setting.

Why are the 500 Internal Server Errors not being logged into your apache error logs?

The errors that cause your 500 Internal Server Error are coming from a PHP module. By default, PHP does NOT log these errors. Reason being you want web requests go as fast as physically possible and it’s a security hazard to log errors to screen where attackers can observe them.

These instructions to enable Internal Server Error Logging are for Ubuntu 12.10 with PHP 5.3.10 and Apache/2.2.22.

Make sure PHP logging is turned on:

  1. Locate your php.ini file:

    el@apollo:~$ locate php.ini
    /etc/php5/apache2/php.ini
    
  2. Edit that file as root:

    sudo vi /etc/php5/apache2/php.ini
    
  3. Find this line in php.ini:

    display_errors = Off
    
  4. Change the above line to this:

    display_errors = On
    
  5. Lower down in the file you’ll see this:

    ;display_startup_errors
    ;   Default Value: Off
    ;   Development Value: On
    ;   Production Value: Off
    
    ;error_reporting
    ;   Default Value: E_ALL & ~E_NOTICE
    ;   Development Value: E_ALL | E_STRICT
    ;   Production Value: E_ALL & ~E_DEPRECATED
    
  6. The semicolons are comments, that means the lines don’t take effect. Change those lines so they look like this:

    display_startup_errors = On
    ;   Default Value: Off
    ;   Development Value: On
    ;   Production Value: Off
    
    error_reporting = E_ALL
    ;   Default Value: E_ALL & ~E_NOTICE
    ;   Development Value: E_ALL | E_STRICT
    ;   Production Value: E_ALL & ~E_DEPRECATED
    

    What this communicates to PHP is that we want to log all these errors. Warning, there will be a large performance hit, so you don’t want this enabled on production because logging takes work and work takes time, time costs money.

  7. Restarting PHP and Apache should apply the change.

  8. Do what you did to cause the 500 Internal Server error again, and check the log:

    tail -f /var/log/apache2/error.log
    
  9. You should see the 500 error at the end, something like this:

    [Wed Dec 11 01:00:40 2013] [error] [client 192.168.11.11] PHP Fatal error:  
    Call to undefined function Foobar\byob\penguin\alert() in /yourproject/
    your_src/symfony/Controller/MessedUpController.php on line 249
    

В данной статье мы рассмотрим наиболее вероятные причины возникновения ошибки 500 “Internal Server Error”.
Причины указаны в порядке вероятности возникновения.

  1. Использование в файлах .htaccess недопустимых на нашем хостинге конструкций, например Options
    -MultiViews
    или php_value и php_flag. Вы можете открыть файл .htaccess текстовым редактором и
    найти строки, в начале которых используются указанные конструкции. Найденные строки можно удалить
    или добавить # в начале. Файл .htaccess может находиться в корневом каталоге вашего сайта — на
    том же уровне, что и файлы index.php или index.html или robots.txt.

  2. Скрипт пытается получить больше памяти, чем ограничено параметром memory_limit. Обычно
    достаточно увеличить этот параметр в панели
    управления. Увеличивать стоит постепенно, с шагом в
    16 — 32 Мб, пока ошибка не пропадет. Новые настройки PHP вступают в силу в течение 3-5 минут.

  3. В панели управления или в php.ini включены не совместимые друг с другом расширения php.
    Например, одновременное включение eaccelerator и APC, либо eaccelerator и XCache почти наверняка
    будет приводить к ошибке Segmentation Fault и, как следствие, к ошибке Internal Server Error на
    сайте.

  4. Если вы редактировали какие либо файлы сайта в ОС Windows, то при сохранении в файл могли
    добавиться не совместимые с unix-форматом символы переноса строки. Для корректной работы необходимо
    использовать совместимые с unix-форматом переносы строк. Например, в
    Notepad++ этот параметр можно настроить в меню “Правка” -> “Формат
    конца строк” -> “Преобразовать в UNIX-формат”.

  5. Слишком долгая работа скрипта (может быть связано, например, с выгрузкой товаров на сайте, либо
    другими долгими запросами). Если веб-сервер не получает никакого ответа от скрипта в течение 120
    секунд, скрипт считается зависшим и его работа принудительно завершается с выдачей ошибки 500.
    Изменить это ограничение в индивидуальном порядке на виртуальном хостинге нельзя. В качестве решения
    вы можете запускать выполнение скрипта, разбив данные на части, либо через
    cron либо напрямую через
    ssh-соединение.

  6. Скрипт возвращает HTTP-заголовки, которые веб-сервер не может распознать и не понимает как интерпретировать.

Включение лога ошибок apache

Однозначно определить источник ошибки поможет включение лога ошибок. Для этого потребуется зайти в
панель управления https://panel.netangels.ru/virtualhosts/ , слева от названия сайта кликнуть на
иконку с тремя горизонтальными полосками и выбрать “Журнал ошибок”. Когда ошибки возникнут, то в
домашнем каталоге на сервере появится файл вида sitename.ru-error.log, где sitename.ru — имя сайта,
для которого вы включили лог ошибок.

Логи ошибок сохраняются в обычные текстовые файлы, их можно просмотреть подключившись к хостингу по
протоколу FTP. Инструкция по подключению.

Так же может быть полезно включить лог php ошибок поставив
галочку напротив пункта error.log и нажав кнопку сохранить. Лог ошибок будет сохранен в файле
log/php-errors.log.

Создание и настройка своего сайта является приятным моментом для вебмастеров. Но иногда они могут сталкиваться с ошибкой «Internal Server Error – The server encountered an internal error or misconfiguration and was unable to complete your request». Что она означает и как её устранить вы узнаете, прочитав эту статью.Скриншот ошибки Internal Server Error

Содержание

  1. Причины ошибки
  2. Где в панели администратора найти .htaccess
  3. Устранение ошибки сервера
  4. Другие способы устранить The server encountered an internal error
  5. Как создать черный список в .htaccess

Причины ошибки

Данная ошибка в переводе звучит так: внутренняя ошибка сервера. Система обнаружила внутренний сбой или неверные настройки и не смогла сформировать запрос. Это значит, что какие-то настройки загруженного движка или других файлов неверна, из-за чего и происходит ошибка. Одной из распространенных причин данной проблемы сервера являются ошибки файла .htaccess. Это дополнительный файл для предоставления определенных команд для серверов, в частности Apache.

Картинка файла .htacess в перечне

Многим вебмастерам удается исправить ошибку «Internal Server Error», исследовав внимательной этот файл. В нем может быть указан неверный домен или вовсе запрещен доступ к сайту. Файл .htaccess дает возможность: изменять настройки для всего сайта, защищать определенные каталоги паролем, создавать черные списки из URL, разрешать доступ только избранным сайтам и многое другое.

Читайте также: Ошибка Error 503 Backend fetch failed что делать.

Где в панели администратора найти .htaccess

Для того, чтобы отредактировать файл, его нужно найти в вашей админ-панели. На хостинге, который имеет cPanel и в движке WordPress этот файл расположен в каталоге public_html.

  1. Выберите каталог, и найдите файл.
  2. После этого в контекстном меню выберите «Редактировать». Он может находится в скрытых файлах.
  3. Вам нужно их отобразить, найдите кнопку «Настройки» и измените пункт «Отобразить скрытые файлы».
  4. Если его вообще нет, вы можете создать его самостоятельно. Нажмите в файловом менеджере кнопку «Файл» вверху и создайте файл .htaccess.

Рекомендую ознакомиться: На этой странице произошла ошибка сценария – Решение.

Устранение ошибки сервера

При внимательном изучении файла .htaccess можно определить из-за чего появляется сообщение Internal Server Error. Иногда пользователям удается определить наверняка, что ошибка в файле .htaccess. Для этого нужно удалить все содержимое из него и сохранить в другой текстовый файл, чтобы не потерять. После этого нужно открыть сайт, если ошибки не возникает, значит причина в файле.

Для начала попробуем отыскать параметры файла, которые могут вызывать эту ошибку. Найдите в своем .htaccess такие строки:

  • Option,
  • php_flag,
  • php_value.

Их необходимо закомментировать. Для этого в начале строки, которая содержит эти параметры нужно поставить знак решетки — #. Закомментированная строка будет выглядеть так: # php_value. Между решеткой и следующим символом необходимо ставить пробел. Для WordPress может понадобиться еще закомментировать следующие параметры: SecFilterEngine Off и SecFilterScanPOST Off.

Возможно в вашем файле нужно установить кодировку, попробуйте закомментировать следующую строку: AddDefaultCharset WINDOWS-1251. Попробуйте изменить на UTF-8. Также нужно найти (если есть) в файле строку # RewriteBase / и убрать из него символ решетки. Просмотрите ссылки в тексте .htaccess, возможно они неверны.

Интересно: ERR_CACHE_MISS — как исправить ошибку?

Другие способы устранить The server encountered an internal error

Найдите в своем файле .htaccess строку AllowOverride All. Если здесь стоит решетка (#), уберите её.

  • Необходимо также проверить, что для домена существует следующая запись VirtualHost. В качестве примера можно посмотреть на скриншоте как выглядит запись; Запись VirtualHost
    Запись VirtualHost в файле .htaccess
  • Убедитесь, что конфигурационный файл содержит хостнейм сервера (обычно указывается в виде домена или IP-адреса);
  • Попробуйте запретить доступ всем входящий IP-адресам с целью проверить работу .htaccess — Deny from all.

Как создать черный список в .htaccess

Вы можете создать свой список из IP-адресов, которые не смогут попасть на ваш сайт. Для этого нужно найти файл .htaccess и отредактировать его. Следующий код, который будет блокировать адреса нужно вводить с новой строки.

  1. Можно в начале кода поставить знак комментария #, чтобы пояснить для себя на будущее для чего он. Например, # Черный список для хамов;
  2. Первой строкой разрешаем посещение для всех адресов — allow from all;
  3. Следующий код будет блокировать указанный адрес — deny from86.164.01;
  4. Добавляем еще один IP-адрес — deny from484.015.44.

Этот список может продолжаться бесконечно. Если вы не знаете, какой адрес у назойливых комментаторов, их можно подсмотреть в логах вашего сервера. В разных движках есть свои методы определения адресов. Это могут делать и сторонние скрипты PHP. Универсальным способ для всех движков определить IP-адрес — найти соответствующий раздел «Логи сервера». На платформе cPanel — это раздел «Посетители». Для того, чтобы избавиться от ошибки «Internal Server Error – The server encountered an internal error» можно воспользоваться онлайн-сервисами проверки конфигурационных файлов.

I am running Apache/2.4.10 (Ubuntu) and I was trying to run CGI scripts with the following configurations.

/etc/apache2/apache2.conf

With the following

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

###################################################################
#########     Adding capaility to run CGI-scripts #################
ServerName localhost
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

And the /etc/apache2/conf-available/serve-cgi-bin.conf

<IfModule mod_alias.c>
    <IfModule mod_cgi.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfModule mod_cgid.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfDefine ENABLE_USR_LIB_CGI_BIN>
        #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        #<Directory "/usr/lib/cgi-bin">
        #   AllowOverride None
        #   Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        #   Require all granted
        #</Directory>

        ## cgi-bin config
        ScriptAlias /cgi-bin/ /var/www/cgi-bin/
            <Directory "/var/www/cgi-bin/">
                AllowOverride None
                Options +ExecCGI 
            </Directory>

    </IfDefine>
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

I have my cgi-script in the directory /var/www/cgi-bin

with the contents in hello.py and made it executable.

#!/usr/bin/env python

import cgitb
    cgitb.enable()    print("Content-Type: text/html;charset=utf-8")

print "Content-type:text/htmlrnrn"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'

I also did sudo a2enmod cgi as suggested here Apache2.4.7 on Ubuntu 14.04 won’t execute Python cgi file. The site displays python code instead

When I try to run the script by going to http://localhost/cgi-bin/hello.py I am getting a 500 Internal Server error.

Any help would be greatly appreciated! Thanks

Понравилась статья? Поделить с друзьями:
  • Anydesk тормозит как исправить
  • Anti error sans art
  • Antd upload error
  • Ansible unhandled error in python interpreter discovery for host
  • Ansible shell ignore error