Loading...
X

Решение проблем с ошибками «Сайт пока не может обработать этот запрос. HTTP ERROR 500» и «Fatal error: Uncaught Error: Call to undefined function _deprecated_file() in»


Если у вас сайт на WordPress, и вы добавите к адресу вашего сайта строоку /wp-includes/rss-functions.php, то есть откроете адрес вида http://сайт/wp-includes/rss-functions.php, например, https://suay.ru/wp-includes/rss-functions.php, то вы почти наверняка получите одну из следующих ошибок:

Сайт suay.ru пока не может обработать этот запрос.
HTTP ERROR 500

Или:

Fatal error: Uncaught Error: Call to undefined function _deprecated_file() in /home/host1000000/suay.ru/htdocs/www/wp-includes/rss-functions.php:8 Stack trace: #0 {main} thrown in /home/host1000000/suay.ru/htdocs/www/wp-includes/rss-functions.php on line 8

Оба эти варианта не являются нормой. В первом случае ошибка веб-сервера. Она засоряет журнал ошибок, хотя и является довольно безобидной.

Второй вариант намного хуже. Эта ошибка в PHP скрипте. Она также засоряет логи сервера. Но вообще-то это полноценная уязвимость Full Path Disclosure. Суть её в том, что выводится абсолютный путь в операционной системе до файлов веб-сайта. Из этого абсолютного пути видно имя пользователя (логин) в системе, что даёт возможность для других атак: подбор пароля, атаки на основе социальной инженерии. Если это совместный (shared) хостинг, то зная точный путь до файла, довольно часто можно прочесть содержимое этого файла у другого пользователя. Этим файлом может быть конфигурационный файл WordPress wp-config.php, содержащий пароль от базы данных MySQL. В общем, даже если вы не понимаете, о чём я здесь сейчас говорю, то имейте ввиду – это плохо. Это не означает, что вас уже прямо сейчас взломают или взломали, но это нужно исправлять.

Что именно выведет ваш WordPress (первую или вторую ошибку) зависит от его настроек.

Причина ошибки в том, что идёт обращение напрямую к PHP файлам, которые находятся в папке wp-includes. Это PHP-скрипты, они необходимы для нормальной работы сайта. Основной скрипт включает (инклудит) их по мере необходимости. Да, обычный пользователь вряд ли будет переходить по таким адресам, но хакеры и программы для сканирования уязвимостей сайтов это проверяют.

Итак, поскольку к этим файлам должны обращаться только скрипты самого сайта, но эти файлы никогда не должны быть доступны для внешних обращений, проблема решается очень просто – достаточно закрыть доступ ко всем файлам .php в папке /wp-includes/. Для этого отредактируйте (или создайте) файл .htaccess и добавьте туда следующие строчки:

RewriteEngine on
RewriteRule ^wp-includes/.+\.php - [NC,F]

Теперь при попытке открыть http://сайт/wp-includes/rss-functions.php будет выводиться сообщение:

Forbidden
You don't have permission to access /wp-includes/rss-functions.php on this server.

Вместо запрета доступа, можно сделать переадресацию на главную (или любую другую) страницу:

RewriteEngine on
RewriteRule ^wp-includes/.+\.php / [NC,R]

После сохранения изменений в файле .htaccess, проверьте, что сайт работает нормально.

One observation on “Решение проблем с ошибками «Сайт пока не может обработать этот запрос. HTTP ERROR 500» и «Fatal error: Uncaught Error: Call to undefined function _deprecated_file() in»
  1. Геннадий

    Здравстауйте! Надеялся, что Ваш совет решит проблему, но увы и ах… Вначале я изменил версию PHP, у меня стояла устаревшая 5,4, поставил 7,2. Ничего не изменилось. Затем создал по Вашему алгоритму файл .htaccess в папке /wp-includes/ для переадресации на главную страницу, хотя этот файл присутствует в основном дереве PHP. Прошли сутки, я попытался зайти в админку сайта и теперь не появляется сообщение об ошибке 500, а автоматом скачиваются файлы: при попытке зайти в админку файл wp-login.php  и при попытке открыть сайт, файл без названия – судя по содержанию с кодировкой страниц входа в админку и самого сайта (к сожалению, данная форма на Вашем сайте не позволяет отправить эти файлы). Итак, что можно посоветовать? Спасибо.

     
    Reply

Leave Your Observation

Ваш e-mail не будет опубликован. Обязательные поля помечены *