Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Не устанавливается IPB 3.4.6 на PHP 7

Опубликовано:

Добрый день.

Подскажите в чем может быть пробелема. При попытке установке версии 3.4.6 выдает вот такую ошибку

 

Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /forum/initdata.php:394 

 

Причем если ставить версию 3.4.9 она без проблем устанавливается

 

Заранее спасибо.

Рекомендованные сообщения

Опубликовано:
  • Автор

Поставил 3.4.9

Теперь когда пытаюсь зайти на в тему выдает вот такую ошибку

Fatal error: Redefinition of parameter $forum_data in /forum/cache/skin_cache/cacheid_1/skin_forum.php on line 426

Не подскажите с ней что делать?

Опубликовано:
Fatal error: Redefinition of parameter $forum_data in \cache\skin_cache\cacheid_1\skin_forum.php on line 426
 

Нужно доунгрейдится с PHP7, эта ошибка типична только для этой версии.

Либо в шаблоне forumIndexTemplate во всем блоке заменить имя переменной $forum_data на $_forum_data, где эти индусы используют в качестве переменной для цикла одноименную переменную шаблона $forum_data.

Открыть /ips_kernel/classTemplateEngine.php

Найти

					if ( strstr( $keep, '=>' ) )
					{
						list( $one, $two ) = explode( '=>', $keep );
						$one = trim( $one );
						$two = trim( $two );
						
						$_normal_func_data .= ",{$one}='',{$two}=''";
					}
					else
					{
						$_normal_func_data .= ",{$keep}=''";
					}

Заменить на

					if ( strstr( $keep, '=>' ) )
					{
						list( $one, $two ) = explode( '=>', $keep );
						$one = trim( $one );
						$two = trim( $two );
						
						if( !in_array( $one, $_final ) )
						{
							$_normal_func_data .= ",{$one}=''";
						}
						if( !in_array( $two, $_final ) )
						{
							$_normal_func_data .= ",{$two}=''";
						}
					}
					else
					{
						if( !in_array( $keep, $_final ) )
						{
							$_normal_func_data .= ",{$keep}=''";
						}
					}

 

Следующая ошибка, которая также связана с версией php 7:

Fatal error:  Uncaught Error: Function name must be a string in /cache/skin_cache/cacheid_1/skin_global.php:1481
 

лечится следующим образом:

 

Внешний вид -> %Шаблон% -> Global Template (Глобальные шаблоны) -> shareLinks

 

->$data['customOutput'][1]
 

Заменить на

->{$data['customOutput'][1]}
 
  • 1 год спустя...
Опубликовано:

А тройка в обще будет работать на php7 ??

Опубликовано:

Нет. 3.4.x только на php 5.6

  • 2 месяца спустя...
Опубликовано:

С допилом может и будет работать. Там есть косячки с которыми форум из коробки не запустится.

  • 4 месяца спустя...
Опубликовано:

Что если я скажу что IPB 3.x может работать на php 7?

"Да ты сумасшедший, IPS сказали что 3.x не будет работать на любой версии 7x." Наверное возразят мне скептики. Вы не поверите, но у меня 2.3x работает на 7.2 буквально с несколькими правками, а тройка и подавно должна работать. Даже больше скажу, она могла бы работать из коробки если не криворукость одного нерадивого верстальщика, который использовал название входящей переменной в шаблоне в качестве переменной в цикле foreach. Здесь нужно сделать небольшую ремарку по поводу того, как работает тег foreach в шаблонах. В кеше шаблона, каждый цикл foreach это отдельная функция, а в качестве входящих переменных передаются все входящие переменные основного шаблона плюс переменные конструкции foreach. Таким образом, если использовать существующее имена, функция тега в итоге приобретает две переменные с одинаковыми именами. Если в php 5 на это закрывалось глаза, то в седьмой версии считается ошибкой. Хотя даже чисто с логической точки зрения это не правильно.

Какие есть варианты решения проблемы?

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

Опубликовано:

Первый - переименовать имя переменной во всем блоке foreach в шаблоне forumIndexTemplate. Простой, но не очень практичный способ, так как нужно выполнить для каждого скина и только для конкретного участка в шаблоне.

Вы хотите сказать что таким простым способом можно поселить IPB 3.x на php 7?

Из-за этой несовместимости я и не перехожу php 7, а значит и не могу поставить последнюю версию панели ISP.

Пока на 4-ку переходить совсем не хочу.

Опубликовано:

Это, скажем так, основная ошибка которая не удавалось исправить без изменения логики скрипта. По тем или иным причинам хотелось сохранить оригинальные имена в шаблоне. И это удалось просто исключив дублирующаю переменную при компиляции шаблона. Кроме нее есть еще несколько фатальных ошибок которые требуют исправления, но правятся легко. Сейчас я готовлю инструкцию для фикса. Правда для 3.4.9. У 3.1.4 ошибок намного больше.

  • 4 недели спустя...
Опубликовано:

Здравствуйте.

Когда вы закончите с мануалом, поделитесь ссылкой и в этой теме пожалуйста :)

Был бы очень вам благодарен, не представляете сколько нервов спасли ... :)

  • 1 год спустя...
Опубликовано:
02.02.2019 в 23:53, siv1987 сказал:

Сейчас я готовлю инструкцию для фикса. Правда для 3.4.9. У 3.1.4 ошибок намного больше.

У Вас инструкция не появилась для перевода форума на PHP 7?

Опубликовано:
23.04.2020 в 19:14, src-l сказал:

У Вас инструкция не появилась для перевода форума на PHP 7?

Инструкция есть, если это все еще актуально.  

Опубликовано:
25.04.2020 в 20:20, siv1987 сказал:

Инструкция есть, если это все еще актуально.  

Да, конечно, актуально. У меня версия 3.3.4. Пробовал выполнить все, что нашел в этой теме, но пока не выходит. Например, не нашел forumIndexTemplate, есть в шаблонах только boardIndexTemplate, но после замены, главная форума выходит без тем. Если можно, огромная просьба поделиться инструкцией.

 

Еще есть проблема - на машине с PHP 5 шаблоны нормально можно редактировать в админке, а там, где PHP 7 - не получается сохранить - ошибка JSON, поэтому не понятно, как это все перенести на машину с PHP 7.

Изменено пользователем src-l

Опубликовано:

Чтобы форум полноценно работал на php 7 отредактировать надо не один файл, несовместимостей там полно.
Адаптирование проводилось на версии 3.4x и php 7.2. По идее инструкция должна подойти и для 3.3x, но точно уверять не могу. 

Опубликовано:
20 минут назад, siv1987 сказал:

Чтобы форум полноценно работал на php 7 отредактировать надо не один файл, несовместимостей там полно.
Адаптирование проводилось на версии 3.4x и php 7.2. По идее должно инструкция должна подойти и для 3.3x, то точно уверять не могу. 

Понятно, можно получить инструкцию?  И еще, как я говорил выше - при редактировании шаблонов в админке, выдается ошибка на PHP 7 Исключение: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data С этим ничего нельзя сделать?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.