Ошибка вида «mod not found», белый экран или сообщение PHP о невозможности подключить файл модуля emotiondownload почти всегда означает одно из трёх: файлы модуля удалены или повреждены, изменились права доступа к ним, либо после обновления движка сайта изменился путь подключения. Прежде чем что-либо переустанавливать, откройте лог ошибок сервера — именно там указано, какой файл PHP пытался загрузить и на какой строке произошёл сбой.
В этой статье разберём безопасный порядок восстановления PHP-модуля: от диагностики через логи до отката из резервной копии. Инструкция построена так, чтобы сначала выполнялись обратимые проверки, а рискованные действия вроде правки кода оставались на крайний случай.
Что означает запрос «emotiondownload php mod restore»
Подобная формулировка обычно встречается, когда пользователь ищет способ вернуть к жизни модуль (mod) на PHP — например, после обновления CMS, переноса сайта на другой хостинг или случайного удаления файлов. Само название emotiondownload может относиться к конкретному модулю загрузки или к пользовательской модификации движка; точное назначение зависит от того, какая система используется на сайте.
Поскольку модули пишутся под конкретную CMS и её версию, универсальной команды восстановления не существует. Однако логика диагностики одинакова: найти причину в логах, проверить целостность файлов, восстановить из копии, проверить совместимость версий PHP.
Шаг 1. Диагностика через логи сервера
Первое действие — найти и прочитать журнал ошибок. На большинстве хостингов он доступен в панели управления (разделы вроде «Логи», «Error Log») или лежит в файле error_log в корне сайта либо в папке модуля. Ищите строки с датой и временем, совпадающими с моментом сбоя.
Типичные записи, связанные с модулем, выглядят так:
PHP Warning: include(mods/emotiondownload/init.php): failed to open stream: No such file or directory
PHP Fatal error: Uncaught Error: Call to undefined function ...
Первая строка говорит, что файл не найден — модуль удалён или путь изменился. Вторая указывает на несовместимость кода с текущей версией PHP. Это принципиально разные ситуации, и лечатся они по-разному.
- 🔍 No such file or directory — файл отсутствует, нужен откат из бэкапа или переустановка модуля.
- ⚙️ Undefined function / deprecated — конфликт версий PHP, проверяйте совместимость.
- 🔐 Permission denied — проблема с правами доступа к файлам и папкам.
- 🧩 Parse error / syntax error — файл повреждён или был некорректно отредактирован.
Шаг 2. Проверка наличия и целостности файлов модуля
Подключитесь к сайту по FTP/SFTP или через файловый менеджер хостинга и убедитесь, что папка модуля существует и содержит все файлы. Сравните её содержимое с оригинальным архивом модуля, если он у вас сохранился, или с резервной копией.
Обратите внимание на типичные признаки повреждения: файлы нулевого размера, обрезанные файлы (заканчиваются посреди кода), странные файлы с расширениями вроде .bak, .suspected — последние иногда появляются после работы антивируса хостинга, который «лечит» подозрительные скрипты, переименовывая их.
⚠️ Внимание: если на сайте обнаружены файлы, переименованные антивирусом хостинга, не восстанавливайте их вслепую. Сначала выясните у поддержки хостинга причину срабатывания — модуль мог быть заражён, и простой откат вернёт уязвимость.
Шаг 3. Восстановление из резервной копии
Самый надёжный способ вернуть модуль — откатить его файлы из бэкапа. Проверьте, какие копии доступны: собственные архивы, автоматические бэкапы хостинга (многие панели позволяют восстановить отдельную папку, не затрагивая весь сайт), копии в системе контроля версий, если она использовалась.
☑️ Порядок восстановления модуля из копии
Восстанавливайте только папку модуля, а не весь сайт целиком — иначе потеряете изменения, сделанные после даты бэкапа: новые страницы, заказы, комментарии. Если модуль хранит данные в базе, проверьте также наличие его таблиц через phpMyAdmin или аналогичный инструмент хостинга.
После загрузки файлов очистите кэш движка. Многие CMS кэшируют список модулей, и без сброса кэша восстановленный модуль может не появиться в админ-панели.
Шаг 4. Права доступа и версия PHP
После переноса файлов между серверами часто слетают права доступа. Обычно для PHP-файлов используются права 644, для папок — 755, но точные требования зависят от настройки сервера: на некоторых хостингах с suPHP или FastCGI слишком широкие права (например, 777) наоборот вызывают ошибку 500 Internal Server Error.
Вторая частая причина — несовпадение версии PHP. Если модуль писался под старую версию, а хостинг обновился, часть функций может быть удалена из языка. Проверить текущую версию можно в панели хостинга или создав временный файл с вызовом:
<?php phpinfo(); ?>
Если хостинг позволяет выбирать версию PHP для сайта, попробуйте временно переключиться на версию, под которую модуль был написан, и проверьте, исчезнет ли ошибка. Это диагностический шаг: постоянно работать на устаревшей версии небезопасно, правильное решение — обновить код модуля.
⚠️ Внимание: файл с
phpinfo()раскрывает конфигурацию сервера любому, кто откроет его в браузере. После диагностики удалите его с сайта.
Сравнение типичных сценариев сбоя
| Симптом | Вероятная причина | Первое действие |
|---|---|---|
| Белый экран страницы | Fatal error в коде модуля | Читать error_log сервера |
| «No such file or directory» | Файлы удалены или путь изменился | Проверить папку модуля по FTP |
| Ошибка 500 | Права доступа или .htaccess | Сверить права с требованиями хостинга |
| Модуль пропал из админки | Кэш CMS или отключение в БД | Очистить кэш, проверить таблицы |
| Ошибки после обновления PHP | Несовместимость версий | Проверить лог на deprecated/removed функции |
Если бэкапа нет: альтернативные пути
Отсутствие резервной копии — неприятная, но не всегда безвыходная ситуация. Проверьте, не сохранился ли установочный архив модуля у разработчика или в репозитории, откуда он был скачан. Уточните у хостинг-провайдера глубину хранения автоматических бэкапов — иногда копии месячной давности доступны по запросу в поддержку.
Если модуль уникальный и писался на заказ, восстановить его можно только переписыванием. В этом случае сохраните данные модуля из базы — таблицы обычно переживают удаление файлов и позволят новому разработчику восстановить логику работы без потери накопленной информации.
Как найти таблицы модуля в базе данных
Откройте phpMyAdmin, выберите базу сайта и посмотрите список таблиц. Модули обычно создают таблицы с узнаваемым префиксом или названием модуля. Перед любыми действиями сделайте экспорт базы через раздел «Экспорт» — это займёт пару минут и защитит от случайных удалений.
Профилактика повторных сбоев
Чтобы восстановление в следующий раз заняло минуты, а не дни, настройте автоматическое резервное копирование файлов и базы данных. Большинство панелей хостинга умеют делать это по расписанию; для крупных сайтов имеет смысл хранить копии на отдельном хранилище, а не только на том же сервере.
- 💾 Регулярные бэкапы — файлы и база, с хранением нескольких поколений копий.
- 🧪 Тестовая копия сайта — обновления CMS и PHP сначала проверяйте на ней.
- 📝 Журнал изменений — фиксируйте, какие модули и когда устанавливались.
- 🔒 Антивирусный мониторинг — своевременно узнавайте о заражении файлов.
Частые вопросы
Модуль восстановлен, но в админке его не видно. Что делать?
Сначала очистите кэш CMS — список модулей часто кэшируется. Затем проверьте, не требует ли модуль повторной активации в разделе управления модулями. Если и это не помогло, проверьте таблицы модуля в базе данных: возможно, запись о его установке была удалена.
Можно ли восстановить модуль без доступа к хостингу, только через админку?
Как правило, нет: для восстановления файлов нужен доступ по FTP/SFTP или через файловый менеджер панели хостинга. Админ-панель CMS позволяет лишь переустановить модуль, если его установщик встроен в движок.
После восстановления появилась ошибка «Call to undefined function». В чём причина?
Наиболее вероятна несовместимость версий: модуль использует функции, удалённые в текущей версии PHP, либо рассчитан на другую версию CMS. Проверьте версию PHP на сервере и требования модуля, при необходимости обновите код модуля или подберите совместимую версию PHP в настройках хостинга.
Антивирус хостинга удалил файлы модуля. Восстанавливать ли их?
Не спешите. Сначала запросите у поддержки хостинга отчёт о срабатывании и проверьте, не был ли модуль действительно заражён. Восстановление вредоносного кода вернёт уязвимость. Безопасный вариант — установить чистую копию модуля из официального источника.
Бэкапа нет, разработчик модуля недоступен. Что остаётся?
Сохраните данные модуля из базы — они часто переживают удаление файлов. Затем либо найдите аналогичный модуль и перенесите данные, либо закажите переписывание модуля разработчику, передав ему структуру таблиц и описание логики работы.