Sh404sef php on line

Восстановление и обновление сайта на Joomla 3.2 -> 3.9

Задача: есть сайт, который был создан в 2013 году на Joomla 3.2.4. Работы по обновлению и сопровождению сайта с того времени не проводилось. После обновления хостером PHP до версии 7.2, сайт начал открываться с ошибкой 500 (Internal Server Error, внутренняя ошибка сервера). Необходимо восстановить работу сайта и обновить его до последней версии Joomla.

Анализ логов сервера показал, что ошибка возникает в компоненте sh404sef.

PHP Fatal error: Cannot use $this as parameter in /virt/homes/test.com/upg.htdocs/administrator/components/com_sh404sef/sh404sef.class.php on line 2093 Status: 500 Internal Server Error

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

После анализа ситуации принят следующий план действий:

  1. Скопировать сайт и поднять его копию на локальном LAMP-сервере с версией PHP 5.
  2. Корректно обновить Joomla и все компоненты до новых версий.
  3. Удалить компонент sh404sef и включить SEO-модуль, встроенный в Joomla. Настроить 301 редирект со старых страниц на новые. Настроить meta-тэги.
  4. Перенести обновленный сайт обратно на хостинг.

Копируем сайт на локальный сервер и настраиваем

Итак, у нас есть локальный сервер CentOS 7 с рабочими AMP-пакетом (Apache + MariaDB + PHP) и phpMyAdmin. Инструкци в сети достаточно: 1, 2, 3. Имеется дамп БД сайта и полное содержимое папки сайта.

Читайте также:  Add table row with javascript

Создадим VirtualHost test.com и скопируем файлы сайта по пути: /var/www/html/test.com/public_html/

# /etc/httpd/conf.d/vhost.conf ServerName www.test.com ServerAlias test.com DocumentRoot /var/www/html/test.com/public_html/ ErrorLog /var/www/html/test.com/logs/error.log CustomLog /var/www/html/test.com/logs/access.log combined DirectoryIndex index.php 

Сменим владельца и дадим права 777 папкам tmp и logs:

chown -R apache:apache /var/www/html/test.com/public_html/* chmod -R 0777 /var/www/html/test.com/public_html/logs chmod -R 0777 /var/www/html/test.com/public_html/tmp 

С помощью phpmyadmin загрузим дамп БД (вкладка «Импорт«):

Загружаем дамп БД с помощью phpMyAdmin операции

Отредактируем файл «configuration.php» и исправим настройки подключения к БД и пути к папкам:

/* configuration.php */ public $host = 'localhost'; public $user = 'bd_user'; public $password = 'bd_pass'; public $log_path = '/var/www/html/test.com.ua/public_html/logs'; public $tmp_path = '/var/www/html/test.com.ua/public_html/tmp'; 

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

Сайт запущен

Однако, пароль от суперадминистратора был утерян. Воспользуемся инструкцией для восстановления. С помощью phpMyAdmin в таблице «jos_users» сбросим пароль на «password«:

Сброс пароля супер администратора на

Обновляем Joomla

Обновление до версии 3.6.5

Текущая версия Joomla — 3.2.4. После входа в панель управления сайтом сразу предлагается обновление до 3.2.7. Согласимся.

Предложение обновиться до вер. 3.2.7

Если присмореться, то вместо версии 3.2.7 нам предлагается сразу версия 3.6.5.

Установка обновления Joomla

В процессе обновления несколько раз просит авторизоваться:

Просьба авторизоваться в процессе обновления Joomla

После чего мы успешно обновились до версии 3.6.5.

Обновление модулей

Переходим в Расширения -> Менеджер расширений -> Update и обновляем модули по одному:

Обновляем модули Joomla

Обновление до версии 3.9.3

Продолжаем обновление Joomla. Оно проходит без проблем.

Обновление Joomla до версии 3.9.3

Удаление sh404sef

Перед удалением sh404sef необходимо сохранить информацию про старые адреса страниц сайта и, при необходимости, meta-данные (если они задавались через sh404sef).

Следуя инструкции по удалению, переходим Расширения -> Менеджер расширений -> Управление. Выделяем только компонент sh404sef и деинсталлируем его. Все связанные компоненты будут удалены автоматически.

Удаление sh404sef

После чего необходимо включить встроенный в Joomla SEF-компонент:

Включаем встроенный SEF-компонент

301 редирект

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

#301 Redirect http://www.test.com/contacts.html -> http://www.test.com/contacts Redirect 301 /contacts.html http://www.test.com/contacts

Мета-теги

При необходимости, meta-теги keywords и description прописываем в пункты меню или статьи.

Исправляем программные ошибки

Теперь необходимо пройтись по всем страницам сайта и посмотреть на консоль JavaScript. Вот, к примеру, «улов» на одной из страниц:

Консоль JavaScript Google Chrome

Судя по всему, библиотека jQuery.js загружается после библиотеки boxplus.js, что приводит к ошибкам. Загрузка jQuery происходит из самописного шаблона сайта. Для решения проблемы используем плагин jQuery easy.

Установка плагина jQuery Easy

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

Настройка плагина jQuery easy

Сайт использует плагин галерей изображений sigPlus, который тоже необходимо обновить. Это удобно сделать, установив последнюю версию этого плагина из встроенного в Joomla каталога «JED«.

Перенос на хостинг

После устранения всех ошибок, сайт и БД можно переносить обратно на хостинг. Необходимо обязательно исправить файл configuration.php (настройки подключения в БД и пути к папкам logs и tmp).

  1. Проверить 301 редирект. Поискать в Google проиндексированные страницы и убедиться что по ним отдается правильный контент;
  2. Проверить title и meta-тег description;
  3. При необходимости, отключить регистрацию;
  4. Проверить права на папки и файлы.

Источник

Оцените статью