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 работает корректно.