Надеюсь всем известно о том, что форумы phpbb3 можно обновлять двумя способами - ручным и автоматическим, а можно и не обновлять вообще Собственно уже написана мною инструкция , данное обновление рассчитано на всех админов, не зависимо от их познания движка ибо требует минимальных телодвижений от того, кто проводит обновление и сводит проблемность обновления к нулю.
Но существует обратная сторона автоматического обновления - непрозрачность. Наверняка мало кто при обновлении раскрывает спойлеры, смотрит какие конфликтные места имели место и как итог - некоторые моды перестают работать, ручные правки затираются и так далее... Это конечно относится к менее опытным администраторам.... Ну и большущий минус - сторонние стили, имеющие имена отличные от prosilver или subsilver2 попросту не обновляются. Для обновления в пределах одной-двух версий это не критично, а если обновляться, допустим, с 3.0.1 до актуальной? Ага, то то же, возникает резонный вопрос - что делать? А тут на помощь приходит ручное обновление движка, вернее частичное обновление....
В свою очередь ручное обновление рассчитано на более опытных и усидчивых администраторов, ведь при обновлении с очень ранних версий необходимо большое количество часов вдумчивых правок, но в данном случае вы можете быть уверены в том, что моды останутся рабочими, стиль будет обновлен.... Но опять таки же при условии того, что вы все правильно отредактировали... Давайте теперь более предметно поглядим на ручное обновление...
Свод своеобразных правил и действий при обновлении:
- Перед обновлением обязательно сделать полное резервное копирование для экономии времени и нервов в случае провального обновления. Все это описано в первых 2-х пунктах
- Отключите форум в настройках в администраторском разделе, незачем кому то шастать по форуму в такое неподходящее время
- Все правки в файлах осуществляются с помощью программы
- В то время как вы делаете правки, не ходите на форум, да, будет куча ошибок, но изза того что вы не до конца завершили обновление, посему не пугайтесь и не останавливайтесь
Код: Выделить всё
http://адрес форума/install/database_update.php
Теперь непосредственно о самом обновлении и правке файлов. Качаете архив с патчами, выбираете нужный вам патч и открываете его в Notepad++.
1. Как узнать какой файл открывать?
Проще простого, по всему файлу вам будут встречаться похожие строки
Код: Выделить всё
diff -x images -crNEB release-3.0.13-PL1/adm/index.php release-3.0.14/adm/index.php
2. Узнал файл, открыл, что делать дальше?
Каждая правка отделяется от предыдущей множеством звездочек - *****. К примеру вот одна правка
Код: Выделить всё
***************
*** 524,529 ****
--- 524,532 ----
$cfg_array[$config_name] = trim($destination);
+ // Absolute file path
+ case 'absolute_path':
+ case 'absolute_path_writable':
// Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir...
case 'path':
case 'wpath':
***************
- Удалить
Обозначается знаком- напротив строк, которые нужно ПОЛНОСТЬЮ удалить, для примера можно взять такую правкуИ она будет значить - удалить полностью строкиКод: Выделить всё
*************** *** 524,529 **** --- 524,532 ---- $cfg_array[$config_name] = trim($destination); - // Absolute file path - case 'absolute_path': - case 'absolute_path_writable': // Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir... case 'path': case 'wpath': ***************
Из указанного файлаКод: Выделить всё
// Absolute file path case 'absolute_path': case 'absolute_path_writable':
- Добавить
Полностью противоположное действию Удалить. Обозначается плюсиком+ , для примераИ это значит что нам надо найти строкуКод: Выделить всё
*************** *** 524,529 **** --- 524,532 ---- $cfg_array[$config_name] = trim($destination); + // Absolute file path + case 'absolute_path': + case 'absolute_path_writable': // Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir... case 'path': case 'wpath': ***************
И добавить после нееКод: Выделить всё
$cfg_array[$config_name] = trim($destination);
Код: Выделить всё
// Absolute file path case 'absolute_path': case 'absolute_path_writable':
- Отредактировать по примеру
Данное действие обозначается восклицательным знаком! и значит то, что нужно внимательно приглядеться и найти отличия между старым и новым кодом и внести такую же правку. К примеруВ данном примереКод: Выделить всё
*************** *** 25,31 **** */ // phpBB Version ! define('PHPBB_VERSION', '3.0.13-PL1'); // QA-related // define('PHPBB_QA', 1); --- 25,31 ---- */ // phpBB Version ! define('PHPBB_VERSION', '3.0.14'); // QA-related // define('PHPBB_QA', 1);
Это старый код, аКод: Выделить всё
*/ // phpBB Version define('PHPBB_VERSION', '3.0.13-PL1'); // QA-related // define('PHPBB_QA', 1);
То что должно получиться в итоге, тобишь вы приглядываетесь к строке, напротив которой стоит восклицательный знак, смотрите как было и как должно получиться и делаете в своем файле так же.Код: Выделить всё
*/ // phpBB Version define('PHPBB_VERSION', '3.0.14'); // QA-related // define('PHPBB_QA', 1);
Тут совсем просто, для начала определяемся на основе
Код: Выделить всё
diff -x images -crNEB release-3.0.13-PL1/styles/prosilver/imageset/imageset.cfg release-3.0.14/styles/prosilver/imageset/imageset.cfg
Код: Выделить всё
/styles/prosilver/imageset/imageset.cfg
Код: Выделить всё
/styles/ваш стиль/imageset/imageset.cfg
В случае обновления ТОЛЬКО стиля (когда сам движок обновлен автоматическим патчем) папку
Как итог по завершению правок файлов вы запускаете скрипт обновления базы данных, получаете положительный ответ и радуетесь тому, что смогли обновиться.... Успехов, не знаю даже что еще добавить