Skip to content

dumpedc/vbfixer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проблема

vBulletin версии 3.8.4 некорректно работает с интерпретатором php 5.3 и выше. В error_log попадает бесчетное количество бессмысленных deprecated warning'ов, что заставляет его моментально разрастаться.

Решение

Данный скрипт позволяет в автоматическом режиме исправить некоторые проблемы vBulletin 3.8.4, проанализировав все входящие в дистрибутив php файлы и сделав автозамену устранить их. Пока что поддерживается только решение Assigning the return value of new by reference is deprecated.

Поиск ведется как в php файлах проекта, так и в коде модулей в mysql из таблицы plugin. Настройки подключения скрипт подхватит автоматически, если встретит валидный config.php от vBulletin. В случае, если такого конфига найдено не было, изменения в базе данных производиться не будут.

Использование скрипта осуществляется исключительно на свой страх и риск. Решение тестировалось на одном проекте, но нет никаких гарантий, что скрипт не поломает другой проект при бездумном использовании.

Установка

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

Для ubuntu потребуется пакет python-dev, а так же пакет с хидерами mysqlclient: libmysqlclient-dev в ubuntu или libmariadbclient в ArchLinux.

Перед началом работы потребуется установить пакеты с зависимостями. Сделать это проще простого, поможет команда pip install -r requirements.txt

Сделать это можно либо под рутом, установив пакеты в основную систему (Не очень хорошее решение), либо используя virtualenv.

В целом процесс развертывания и использования скрипта выглядит примерно следующим образом:

ubuntu@domain:~$ cd /tmp
ubuntu@domain:/tmp$ git clone https://github.com/dumpedc/vbfixer.git
ubuntu@domain:/tmp$ cd vbfixer
ubuntu@domain:/tmp/vbfixer$ virtualenv env
ubuntu@domain:/tmp/vbfixer$ source env/bin/activate
(env)ubuntu@domain:/tmp/vbfixer$ pip install -r requirements.txt
(env)ubuntu@domain:/tmp/vbfixer$ python vbfixer.py /sites/domain.tld/public/

Где /sites/domain.tld/public - путь до вашей установки vBulletin.

Использование

Usage: python vbfixer.py [OPTIONS] PATH

Options:
  -v                        Расширенный вывод
  -c TEXT                   Кодировка файлов. Если не указана, будет
                            определена через libmagic
  -s                        "Тихий" режим. Все замены будут произведены
                            автоматически. В каталогах будут созданы patch-
                            файлы с аналогичными именами
  -i [assign_by_reference]  Включает только конкретные проверки из заданного
                            списка
  --no-mysql                Не проверять модули в базе данных
  --help                    Show this message and exit.

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

Ключ -s включает "тихий" режим, производящий автоматические замены, но при этом оставляя рядом unix patch-файлы с описанием проделанных изменений, что позволяет быстро откатить нежелательные.

Ключ --no-mysql позволяет запустить скрипт без проверки модулей из таблицы plugin в базе данных, даже в том случае,е сли будет обнаружен валидный config.php.

PATH может быть как конкретным файлом (Например python vbfixer.py /tmp/vbulletin/includes/init.php), так и каталогом (Например python vbfixer.py /tmp/vbulletin).

В случае каталога скрипт будет осуществлять рекурсивный поиск во всех файлах с расширением .php внутри каталога.

На будещее

Убедиться, что изменения поля phpcode в таблице plugin работает корректно.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages