Диагностика и решение ошибок при работе со скриптом

Общие рекомендации

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

1. Увеличение мощности сервера:

  • Повышение объема оперативной памяти: Рекомендуется увеличить объем оперативной памяти сервера для более быстрой обработки данных.

  • Увеличение числа ядер процессора: Дополнительные ядра процессора могут ускорить выполнение вычислений и операций с базой данных.

2. Проверка настроек сервера:

  • Проверка наличия лишних задач: Убедитесь, что на сервере нет лишних задач или процессов, которые могут замедлять его работу.

  • Оптимизация конфигурации: Проверьте настройки сервера и базы данных на оптимальность для обеспечения эффективной работы.

3. Мониторинг производительности:

  • Использование инструментов мониторинга: Для контроля производительности системы рекомендуется использовать специальные инструменты, которые помогут выявить узкие места и проблемы.

4. Эксперименты с конфигурацией:

  • Проведение тестовых изменений: Для оптимизации работы сервера можно провести эксперименты с увеличением ресурсов (память, ядра процессора) и оценить их влияние на скорость работы.

5. Резервное копирование данных:

  • Создание резервных копий: Регулярное создание резервных копий данных поможет обеспечить безопасность информации и защиту от потери важных данных.

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

Известные проблемы

Ниже описаны возможные ошибки, которые могут возникать при работе со скриптом и методы решения этих ошибок.

Долго создается заявка или не создается вовсе

Отключите SMTP-сервер в разделе "Сообщения -> E-mail шаблоны", если вы используете исходящую почту, после этого проверьте скорость создания заявки.

Если заявка будет создаваться быстрее, то необходимо сменить SMTP сервер на один из рекомендуемых нами.

Зависает таблица направлений обмена при выборе валют

Установите настройки кэширования в ЛК Cloudflare — выберите опцию "No query string" в разделе "Caching" -> "Configuration"

Некорректно формируется экспортный XML-файл

Если вместо экспортного XML-файла отображается ошибка валидации файла, это чаще всего означает, что в файлах скрипта могут быть первые пустые строки в одном или некоторых файлах.

Так будет выглядеть открытый локально XML-файл, скачанный со страницы в браузере (ПКМ -> "Сохранить как -> XML-файл"

Для устранения ошибки необходимо найти файлы с пустыми строками. Для этого:

Найдите корневую папку сайта (из-под root часто это var/www/www-root/data/www/имя_домена), заходим в неё - cd var/www/www-root/data/www/имя_домена

Из-под пользователя для сайта аналогично, но путь к корню короче (cd www/имя_домена)

Затем выполните команду поиска пустых первых строк для поиска по всем файлам сайта:

find . -name "*.php" -type f -exec sh -c 'if [ "$(head -n 1 "$1" | tr -d "\n")" = "" ]; then echo "$1: empty first line"; fi' _ {} \;

В ответе будут все файлы, у которых первая строка пустая.

Найдите вручную все найденные файлы на сервере, откройте их и удалите пустые строки.

Также проблема при формировании файла может заключаться в том, что на 1 строке в файле отстутствует информация о кодировке и версии XML (prolog) — в этом случае стоит перезалить файлы скрипта для обновления поверх существующих файлов на сервере (из-под пользователя, созданного для сайта, не root!).

Нестабильная работа сайта на протоколе HTTPS

Проверьте, как указан домен в разделе "Настройки" -> "Общие" в панели администратора, должен быть указан как https://ваш_домен

Проверьте как указан домен в БД (таблица xxxx_options), должен быть указан как https://ваш_домен

Открыть БД вы можете в панели управления ISP Manager, раздел "Базы данных"

Если кнопка "Web-интерфейс" отсутствует, установите phpMyAdmin.

phpMyAdmin для работы с БД в ISP Manager можно установить через раздел "Настройки - Конфигурация ПО" - отметить галочкой "Веб-интерфейс администрирования MySQL" - нажать кнопку "Установить" над таблицей (действия производить из-под root)

В личном кабинете Cloudflare установите тип шифрования как Flexible в разделе "SSL/TLS" -> "Overview"

Если же у вас используете самоподписанный сертификат, выпущенный не в ЛК Cloudflare - выберите пункт "Full (Encrypts end-to-end, using a self signed certificate on the server)"

Уберите галочку постоянного редиректа на HTTPS в настройках сайта в ISP Manager

Не отображается картинка с кодом (капча) на страницах сайта

Установите права на запись (например, 777) для папки /wp-content/pn_uploads/captcha/ или /wp-content/uploads/captcha/.

Если вы не знаете как это сделать, то обратитесь в службу поддержки хостинга с данным вопросом.

Не отправляются письма по статусам заявок, коды подтверждений

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

Если содержимое письма выглядит подозрительно для почтовых сервисов, можно попробовать его дополнить или изменить, чтобы избежать проблем с доставкой.

Не работает генерация QR-кодов в заявках

В версии модуля "QR код генератор" 2.5.2 был заменен сервис для генерации кодов для более стабильной работы — обновите модуль до актуальной версии по инструкции.

Ссылка на скачивание модуля напрямую.

Шорткод в шаблонах для статусов заявок менять не потребуется.

Не работает парсер BestChange или Парсеры 2.0 (не обновляются курсы валют)

Вероятно, файлы на сервер были загружены под рутом (root), а должны загружаться под пользователем для сайта - необходимо сменить владельца файлов и директорий. Порядок действий:

  • скачайте корневую папку со всеми файлами как архив на ПК

  • удалите эти файлы на сервере под рутом

  • зайдите в ISP Manager под пользователем, созданным для сайта

  • загрузите архив на сервер и распакуйте его по тому же пути

Отображается ошибка "Нет столбцов в таблице БД {название таблицы}"

Переактивируйте основной плагин (Premium Exchanger) в разделе "Плагины".

Затем отключите режим обновления в разделе "Настройки обменника" → "Основные настройки".

После этого недостающие столбцы будут созданы в таблице.

Отсутствует доступ к сайту

Необходимо найти таблицу XXXX_options в вашей БД через Phpmyadmin или Adminer и проверить поля home и siteurl (должен быть указать ваш актуальный домен) phpMyAdmin в ISP Manager можно установить через раздел "Настройки - Конфигурация ПО - отметить галочкой "Веб-интерфейс администрирования MySQL" - нажать кнопку "Установить" над таблицей

Очистка логов мерчантов и включение автоочистки

При долгой работе модулей "Логи мерчантов" и "Логи автовыплат" записанные логи могут относительно быстро заполнить БД и могут возникнуть ошибки при работе с сайтом, если не включена автоочистка логов.

Рекомендуем включать логирование только на время настройки модулей мерчантов, при стабильной работе приема средств и автовыплат логи можно отключить.

В разделе "Настройки" -> "Cron" скопируйте ссылку для задания cron и создайте задание на сервере по инструкции (время выполнения - раз в 24 часа или реже).

Необходимо зайти в БД через /Adminer и открыть таблицу (на всякий случай сделайте бэкап БД перед очисткой таблицы)

Перейдите в веб-интерфейс БД.

Если веб-интерфейс недоступен откройте к нему доступ по инструкции:

Как узнать какой файрволл установлен на сервере: под root-пользователем зайдите в панель ISPmanager, в консоли Shell выполните команду ufw status numbered — если будут выведены правила, то отключение правил производится командой ufw disable. После работ с базой данных обязательно включите правила обратно командой ufw enable.

Если будет выведена команда Command 'ufw' not found, значит правила настроены в iptables чтобы отключить правила там, нужно выполнить команду iptables -P INPUT ACCEPT && iptables -P FORWARD ACCEPT, а после работ с базой данных перезагрузить сервер правила включатся автоматически

Найдите таблицу xxxx_merch_logs (где xxxx - ваш префикс таблицы).

Перейдите на вкладке "Операции/Operations".

Очистите таблицу по нажатию "TRUNCATE"

Подтвердите очистку данных.

Повторите действия для таблицы .

Ошибка 525 "SSL handshake failed" при заходе на сайте

Ошибка "SSL handshake failed" указывает на то, что произошла проблема при установлении защищенного соединения между клиентом (обычно это браузер) и сервером.

В настройках личного кабинета в Cloudflare в разделе "SSL/TLS" установите параметр "Your SSL/TLS encryption mode" как "Flexible"

Ошибки панели администратора после обновления скрипта

Проверьте содержимое файла userdata.php по инструкции

Ошибка 404 при переходе на страницу направления обмена

Скорее всего, у вас включен модуль "Тире в направлении обмена" в разделе "Модули", но не сохранены настройки для применения изменений — вы можете отключить его или оставить включенным (на ваше усмотрение).

Перейдите в раздел "Настройки -> Постоянные ссылки" и нажмите на кнопку "Сохранить изменения", ничего не меняя на самой странице.

После этого проверьте отображение направлений обмена. Если изменения не будут сразу же отображаться — сбросьте кэш в Cloudflare (если используете его).

Проверка размера таблиц в базе данных

Если сайт или панель администратора начинают тормозить — проблема может быть в разрастании некоторых таблиц в базе данных (чаще всего это таблицы логов).

Для просмотра самых больших таблиц для их последующей очистки выполните следующие действия:

В панели ISP Manager зайдите в раздел "Базы данных", выберите вашу БД (скопируйте название БД в текстовый файл) и перейдите в раздел "Пользователи":

На странице выберите владельца БД и нажмите "Изменить":

Нажмите на значок глаза, что просмотреть пароль пользователя. Сохраните имя пользователя и пароль в текстовый файл.

Перейдите в раздел "Shell-клиент" и введите команду mysql -u username -p, где вместо username укажите имя пользователя БД из предыдущего пункта. Выполните команду, а затем введите пароль пользователя (символы не будут отображаться про вводе) и нажмите Enter. При успешной авторизации вы увидите текст "Welcome to the MySQL monitor."

Затем введите команду SELECT table_name AS "Table", round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" FROM information_schema.TABLES WHERE table_schema = "database_name" ORDER BY (data_length + index_length) DESC;, где вместо database_name укажите имя башей БД. Нажмите Enter.

После выполнения этих пунктов отобразится список всех таблиц, отсортированных по размеру (самые большие таблицы сверху).

Системная ошибка (код: anticsfr)

В качестве быстрого временного решения проблемы - достаточно перезагрузить страницу в браузере.

Эта ошибка указывает на проблему с записью сессий на сервере или изменением IP-адреса пользователя. Вероятно, настройка хранения пользовательских сессий выполнена некорректно.

Для решения проблемы необходимо установить настройки сессий так, как показано на скриншоте ниже.

session.gc_probability и session.gc_divisor: Эти два параметра вместе определяют вероятность запуска процесса сбора мусора на каждом запросе. Вероятность рассчитывается как gc_probability/gc_divisor. Например, если gc_probability равно 1, а gc_divisor равно 1000, то сбор мусора будет запускаться примерно на 0,1% запросов

session.gc_maxlifetime: Этот параметр определяет максимальное время жизни сессии в секундах. Если сессия старше этого времени, она будет считаться "мусором" и будет удалена при следующем запуске процесса сбора мусора

После изменения конфигурации PHP, вам нужно перезапустить веб-сервер для применения изменений.

Задание 1:
find /var/www/*/data/mod-tmp/ -name "sess_*" -exec rm {} \;
Задание 2:
find /var/www/*/data/bin-tmp/ -name "sess_*" -exec rm {} \;
Тормозит/зависает панель управления скриптом или сайт, отображаются ошибки при создании заявки

Удаление сессий

Выполните команду через ssh:

cd /var/www/имя_пользователя_сайта/data

Выполните команду:

find mod-tmp -name "sess_*" -mtime +2 -type f -print0 | xargs -0rn 20 rm -f

После этого удалятся все сессии старше 2 дней.

Также вы можете зайти по SSH из другого окна (сессии) и ввести:

df -i

После ввода команды вы увидите заполненность диска файлами.

Количество inode (количество возможных файлов) на разных серверах может существенно отличаться, поэтому очистка может занять от 10 минут до 5 часов

Настройки PHP

Зайдите в панель управления ISP Manager из-под root-пользователя и проверьте версию PHP для сайта.

Затем откройте настройки нужной версии PHP

Для указанных ниже параметров на вашем сервере должны быть установлены значения как на скриншоте. Если они отличаются от приведенных ниже - измените их.

Для полной очистки файлов выполните команду find mod-tmp -name "sess_*" -type f -print0 | xargs -0rn 20 rm -f

После этих действий временные файлы будут удалены с сервера и будет работать автоочистка файлов через PHP.

Увеличение лимита памяти

В случае обработки большого объема данных, скрипту может не хватать выделенной оперативной памяти на сервере для нормальной работы. Чтобы увеличить лимит оперативной памяти, который может использовать WordPress, необходимо выполнить следующие шаги:

  1. На сервере открыть файл ваш_домен/wp-config.php и после строки define(‘WP_DEBUG’, false); прописать следующие строки и сохранить изменения:

define('WP_MEMORY_LIMIT', '512M');define('WP_MAX_MEMORY_LIMIT', '1024M');
  1. В конфигурации вашего сервера установить значение MEMORY_LIMIT = 512M.

Другие действия

Обратитесь в поддержку вашего хостинга и попросить дать информацию по нагрузке на ваш сервер.

Также вы можете удалить на сервере модуль \wp-content\plugins\premiumbox\moduls\courselogs (если он есть), он может грузить систему больше всего

Можно отключить все модули в разделе "Модули" (зафиксировав состояние "до") и проверить - будет ли сайт работать быстрее?

Если да, то нужно будет постепенно включать модули обратно (по 3-5 за раз) и проверять на каком шаге начнется подтормаживание - после этого анализировать модуль, который вызывает торможение.

Увеличение максимального размера загружаемых файлов

При необходимости вы можете установить своё значение для загружаемых пользователями файлов через ЛК или в заявке (картинки для верификации счетов/личности).

Ограничение по умолчанию составляет 2 мегабайта.

При использовании ISP Manager — зайдите под root-пользователем в панель и перейдите в раздел "Настройки PHP":

Выберите версию PHP, которая используется на вашем сайте и зайдите в её настройки:

Установите желаемое значение для опции "Макс. размер файла" и сохраните изменения. Перезагрузите сервер.

Если вы не используете панель ISP Manager — в файле php.ini найдите нижеуказанные директивы, установите для них свои значения и перезагрузите сервер.

upload_max_filesize = 128M — макс. размер одного загружаемого файла
post_max_size = 128M — макс. размер набора файлов, загружаемых за один запрос
memory_limit 256M — лимит памяти PHP
max_execution_time 300 — макс. время исполнения запроса в секундах
max_input_time 300 — макс. время время в секундах, которое скрипт может потратить на разбор входных данных

upload_max_filesize — установите значение, превышающее размер вашей резервной копии post_max_size — установите значение > чем резервная копия memory_limit — установите значение > чем резервная копия max_execution_time — установите значение 0 (бесконечно)

Если после увеличения размера файлов вы получаете ошибки - воспользуйтесь официальным руководством для PHP по устранению ошибок.

Установка статуса "На проверке"
  1. В настройках всех используемых модулей мерчантов для указанного ниже блока настроек ("Работа со статусами заявок") выберите из выпадающего списка вариант "На проверке" для всех опций и сохраните изменения.

  1. В настройках всех используемых модулей автовыплат установите запрет на совершение выплаты для заявок, находящихся в статусе "На проверке" — выберите пункт "Нет" для выделенной ниже опции.

Шпаргалка по настройке DNS записей для работы почты на домене

Время от времени приходится разбираться с некоторыми аспектами проверки электронной почты. Это включает в себя ряд DNS-записей и запросов.

Поэтому вот краткая шпаргалка, которую вы можете использовать в следующий раз, когда не вспомните, какие записи используются для проверки SPF, DKIM, DMARC и т. д.

Модуль "QR Генератор":

Last updated