Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Petrov

Не устанавливается 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]}
 
  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

Поделиться сообщением


Ссылка на сообщение

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

  • Upvote 2

Поделиться сообщением


Ссылка на сообщение

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

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

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

Поделиться сообщением


Ссылка на сообщение
02.02.2019 в 23:53, siv1987 сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
23.04.2020 в 19:14, src-l сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
04/27/20 06:58 (изменено)
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, но точно уверять не могу. 

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...