TIER_FOREVER Опубликовано 5 Апреля 2014 Жалоба Поделиться Опубликовано 5 Апреля 2014 Возникла необходимость перенести форум (2.1.7) на новый сервер со следующими характеристиками: MYSQL (5.5.35-0+wheezy1)Версия PHP 5.4.4-14+deb7u8 (cgi-fcgi) Все работает, кроме: 1) Формы регистрации (просто выдает пустую страницу без всяких ошибок). При этом существующие юзеры логинятся без проблем. 2) В админцентре висит вверху строчка: IPB Предупреждение [2] Creating default object from empty value (Строка: 50 файла /sources/lib/admin_functions.php) Я связываю все это именно с новой версией ПХП и т.д. Может, и не так, но суть не в этом, а в том как все это исправить? Помогите плиз! Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Denis Chursinov Опубликовано 5 Апреля 2014 Жалоба Поделиться Опубликовано 5 Апреля 2014 2.х даже с пхп 5.3 задружить удается редко. А тут с 5.4 . У вас же CGI-версия, поставьте параллельно 5.2 специально для IPB. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Arhar Опубликовано 6 Апреля 2014 Жалоба Поделиться Опубликовано 6 Апреля 2014 последняя версия php, с которой можно работать на 2.1.7 - 5.2.хя пытался ставить на локалхосте на 5.3, переписываешь одну ненравящуюся конструкцию - получаешь ошибку дальше по ходу, получилось намного быстрее подключить старый репозитарий с 5.2 и поставить нужный phpну или если чувствуете силу - ./configure и длинный, очень длинный списокпотому что если потом окажется, что нужны ttf, то конфигуре снова Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Wartys Опубликовано 19 Октября 2015 Жалоба Поделиться Опубликовано 19 Октября 2015 2) В админцентре висит вверху строчка: IPB Предупреждение [2] Creating default object from empty value (Строка: 50 файла /sources/lib/admin_functions.php)На PHP 5.6 тоже такая фигня, хотя всё нормально работает. последняя версия php, с которой можно работать на 2.1.7 - 5.2.х...Соответственно, это не так Задолбали эти гоп-обновления MYSQL и PHP, вечно норовящие быть несовместимыми с предыдущими версиями. Ради них плясать с обновлениями IPB, тянущей поезд модификаций и настроек, когда всё работает и надо изменить каких-то пару строк в коде - по меньшей мере неразумно. Вот бы создать поддержку совместимости старых IPB с новыми PHP/MYSQL, а? Спрос есть, можно даже платно. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bifidokk Опубликовано 20 Октября 2015 Жалоба Поделиться Опубликовано 20 Октября 2015 На PHP 5.6 тоже такая фигня, хотя всё нормально работает. Задолбали эти гоп-обновления MYSQL и PHP, вечно норовящие быть несовместимыми с предыдущими версиями. Ради них плясать с обновлениями IPB, тянущей поезд модификаций и настроек, когда всё работает и надо изменить каких-то пару строк в коде - по меньшей мере неразумно. Вот бы создать поддержку совместимости старых IPB с новыми PHP/MYSQL, а? Спрос есть, можно даже платно. подозреваю, что и многие моды придется переписывать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Wartys Опубликовано 29 Ноября 2015 Жалоба Поделиться Опубликовано 29 Ноября 2015 Ясно, предложений нет. Учитывая подобную тенденциозность (даже со стороны IPB), единственный верный путь подсказан всё же Arharом. Если делаешь проект не на пару лет, надо городить свою выделенку - и ставить то, что работает. Господа, эпоха настала: пора демпить цены на VPS и выделенные серверы Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bitl Опубликовано 12 Мая 2016 Жалоба Поделиться Опубликовано 12 Мая 2016 Решение проблемы (вдруг ещё кому нужно): В файле /sources/action_public/register.php ищем строчку: $this->modules->register_class(&$this);заменяем на: $this->modules->register_class($this);То есть удаляем символ "&". Всё. TIER_FOREVER отреагировал на это 1 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Denis Chursinov Опубликовано 12 Мая 2016 Жалоба Поделиться Опубликовано 12 Мая 2016 Не очень элегантно. Символ & означает, что используется не копия объекта, а ссылка на него. Т.е. если функция register_class меняет что-то в $this, то изменения передаются объекту, а если символ & убрать, то они будут потеряны. В php 5.4 передача ссылок была запрещена, они стали определяться в функции, а не в обращении к ней. Таким образом, если вы удаляете & из вызова функции, то надо его добавить в саму функцию. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bitl Опубликовано 12 Мая 2016 Жалоба Поделиться Опубликовано 12 Мая 2016 Не очень элегантно. Символ & означает, что используется не копия объекта, а ссылка на него. Т.е. если функция register_class меняет что-то в $this, то изменения передаются объекту, а если символ & убрать, то они будут потеряны. В php 5.4 передача ссылок была запрещена, они стали определяться в функции, а не в обращении к ней. Таким образом, если вы удаляете & из вызова функции, то надо его добавить в саму функцию. Склоняюсь к мнению, что там просто опечатка и "&" там в любом случае был лишний. Во всем листинге это единственный случай. И именно эта строка вызывает ошибку на этапе компиляции (поэтому никаких run-time ошибок не показывает). По крайней мере у меня регистрация работает теперь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bifidokk Опубликовано 14 Мая 2016 Жалоба Поделиться Опубликовано 14 Мая 2016 Не очень элегантно. Символ & означает, что используется не копия объекта, а ссылка на него. Т.е. если функция register_class меняет что-то в $this, то изменения передаются объекту, а если символ & убрать, то они будут потеряны. В php 5.4 передача ссылок была запрещена, они стали определяться в функции, а не в обращении к ней. Таким образом, если вы удаляете & из вызова функции, то надо его добавить в саму функцию. Склоняюсь к мнению, что там просто опечатка и "&" там в любом случае был лишний. Во всем листинге это единственный случай. И именно эта строка вызывает ошибку на этапе компиляции (поэтому никаких run-time ошибок не показывает). По крайней мере у меня регистрация работает теперь. Склоняюсь к мнению, что вы просто не знаете php, вам выше написали про передачу переменной по ссылке Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 14 Мая 2016 Жалоба Поделиться Опубликовано 14 Мая 2016 выше написали про передачу переменной по ссылкеА нужна ли была передача по ссылке? Угадайте откуда код на скриншоте: http://images.vfl.ru/ii/1463244110/050e4cc1/12658040.gifПо мере взросления версий код ipb становится сложней, но я не заметил уменьшения числа ляпов. Может разве в самой последней версии радикально переписали и исправили... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Denis Chursinov Опубликовано 15 Мая 2016 Жалоба Поделиться Опубликовано 15 Мая 2016 Код из версии ниже 3. В тройке глобальные не использовались. А вообще стандартный код для dle даже текущей версии.Что касается передачи ссылки, то я говорил чисто теоретически. Я лишь обратил внимание на то, что & это не просто мусор, а вполне конкретная конструкция использованная с определенными целями. Там подключаются различные модули, кому-то надо передавать данные наверх, кому-то нет. Надо смотреть конкретную конфигурацию, может здесь ссылка и не используется. А может быть это аукнется в самом неожиданном месте. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 15 Мая 2016 Жалоба Поделиться Опубликовано 15 Мая 2016 может быть это аукнется в самом неожиданном местеРегистрация либо осуществляется, либо нет. Вроде бы больше негде аукаться. Код из 1.3.Ошибка не простительная даже школьнику: сначала создаем ошибку, потом подавляем ее отображение; при этом код не выполняет вообще ничего. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Denis Chursinov Опубликовано 17 Мая 2016 Жалоба Поделиться Опубликовано 17 Мая 2016 ну так-то да, есть и более короткий способ очистить буфер вывода перед отправкой картинки )По поводу аукивания не так все просто. Я не знаю, какие данные конкретный модуль регистрации пытается выставить для текущего сеанса. Ему передают ссылку на ipsclass или что там у двойки. Он теоретически может и массив текущего пользователя набивать в этом экземпляре, а потом этот массив летит в базу в качестве нового мембера. Может какие-то поля не долетят, может какие-то флажки не встанут для последующей обработки. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 20 Мая 2016 Жалоба Поделиться Опубликовано 20 Мая 2016 есть и более короткий способЯ о заголовках. После flush'а они же не отправятся. Может какие-то поля не долетятАвтор пишет, что регистрация происходит.Подозреваю, что значок амперсанда в самом деле был лишним - в коде 1.х я их штук 5 удалил в свое время, и все они были абсолютно ненужными.Но конечно же, предварительно следует посмотреть по коду, и по мере необходимости подправить что требуется. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bitl Опубликовано 20 Мая 2016 Жалоба Поделиться Опубликовано 20 Мая 2016 (изменено) Склоняюсь к мнению, что вы просто не знаете php, вам выше написали про передачу переменной по ссылке Посмотрите соответствующий файл, и расскажите мне - нафига там ссылка. register.php Функциональность конкретного блока кода я естественно проверил, на всякий случай. То что я описал лишь решение проблемы не значит, что я тупо нашел строку и сделал изменения, не понимая - что я делаю. Изменено 20 Мая 2016 пользователем bitl Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bifidokk Опубликовано 21 Мая 2016 Жалоба Поделиться Опубликовано 21 Мая 2016 То что я описал лишь решение проблемы не значит, что я тупо нашел строку и сделал изменения, не понимая - что я делаю.а выглядит именно так, поэтому и сделал такой вывод в двойке при использовании модулей после какого-либо действия $this везде передается по ссылке. и это не выглядит как опечатка. видимо, чтобы постоянно не отдавать разное кол-во переменных, не знаю задумки автора.конкретно для данного примера, да, не нужна там, по поводу всех подобных моментов в двойке сказать не могу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 bitl Опубликовано 21 Мая 2016 Жалоба Поделиться Опубликовано 21 Мая 2016 видимо, чтобы постоянно не отдавать разное кол-во переменных, не знаю задумки автора.конкретно для данного примера, да, не нужна там, по поводу всех подобных моментов в двойке сказать не могу. В 2.1.4 (коий у меня стоит, с заплатками и своими доработками уж 9 лет, посему обновлять не резон) это единственный случай, нигде больше не встречается. Поэтому на современном php все работает, кроме регистрации и восстановления пароля. Я сам сначал полез гуглить, когда обнаружил проблему (сервер недавно переустановил), оказалось. что многие люди искали решение, и некоторые из-за этого прикручивали более старую версию php на сервере. Так что я пофиксив проблему решил отписаться в этой, вероятно уже не актуальной теме. Вдруг ещё кому-то будет надо. TIER_FOREVER отреагировал на это 1 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 TIER_FOREVER Опубликовано 8 Ноября 2016 Автор Жалоба Поделиться Опубликовано 8 Ноября 2016 (изменено) Не поверите, но это все еще актуально. )) Пошел проверять предложенный способ. Изменено 8 Ноября 2016 пользователем TIER_FOREVER Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 TIER_FOREVER Опубликовано 8 Ноября 2016 Автор Жалоба Поделиться Опубликовано 8 Ноября 2016 Решение проблемы (вдруг ещё кому нужно): В файле /sources/action_public/register.php ищем строчку: $this->modules->register_class(&$this);заменяем на: $this->modules->register_class($this);То есть удаляем символ "&". Всё. Дружище, ты гений! Все заработало! ))) А может подскажешь еще заодно как избавиться вот от этой раздражающей надписи: IPB Предупреждение [2] Creating default object from empty value (Строка: 50 файла /sources/lib/admin_functions.php) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 TIER_FOREVER Опубликовано 14 Ноября 2016 Автор Жалоба Поделиться Опубликовано 14 Ноября 2016 Ау, тут есть кто живой? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
TIER_FOREVER
Возникла необходимость перенести форум (2.1.7) на новый сервер со следующими характеристиками:
MYSQL (5.5.35-0+wheezy1)
Версия PHP 5.4.4-14+deb7u8 (cgi-fcgi)
Все работает, кроме:
1) Формы регистрации (просто выдает пустую страницу без всяких ошибок). При этом существующие юзеры логинятся без проблем.
2) В админцентре висит вверху строчка: IPB Предупреждение [2] Creating default object from empty value (Строка: 50 файла /sources/lib/admin_functions.php)
Я связываю все это именно с новой версией ПХП и т.д. Может, и не так, но суть не в этом, а в том как все это исправить?
Помогите плиз!
Ссылка на комментарий
Поделиться на других сайтах
20 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.