ОсновноеRadiotalkПользовательское
VOC++ чаты (больше не поддерживаются)
3   •   Посмотреть все темы

Запуск VOC++ чата на "PHP 5.6" - без проблем! И что с PHP7.1?

 

20089
Dimitry @Dimitry
Запуск VOC++ чата на "PHP 5.6" - без проблем! И что с PHP7.1/7.4?

Запустил чат на php5.6, исправил критические проблемы, после чего чат запустился, однако есть ещё другие мелкие проблемки.
Необходимые найденные исправления доступны ниже:

1. В файл inc_comon.php в самом верху добавить такие зелёные строки:
<?php

//MIGRATION to PHP5.6
ini_set('default_charset','cp1251');
mb_internal_encoding("cp1251");
foreach($GLOBALS as $k=>$v) if($k[0]=="_") {
if($k=="_FILES") ${"HTTP_POST$k"}=$GLOBALS[$k]; else ${"HTTP$k"."_VARS"}=$GLOBALS[$k];
}


2. В файле events.php найти 73 строку и меняем на новую, изменения синим:
if(function_exists($eventHandlers[$i]["handler"])) $eventHandlers[$i]["handler"]($HParam, $LParam);

3. Чат уже работает, но есть другие файлы с номерами строк где возможны ошибки, просто удаляем красные &:
admin/clan_list.php:19: $url = fsockopen($address, 80, &$errno, &$errstr, 30);
edit_clan.php:24: $url = fsockopen($address, 80, &$errno, &$errstr, 30);
plugins/antiproxy/Client.php:632: $this->socket = fsockopen( $host, $port, &$this->reply, &$this->replyString, 5);
powmod/friends/friends.php:690: array_push( &$approval_friend, $row_a['friend_name'] );
powmod/friends/friends.php:691: array_push( &$approval_friend_id, $row_a['fid'] );

SSH команда поиска лишних &, кроме папки форума, для экспертов:
egrep -n -R '[( ]{1}&\$' ./|grep -v Binary|grep -v 'function '|grep -v '/forum/'

4. Если присутствует нижеприведенная строка 341 в файле sender.php, то добавим пропущенный знак равно =, добавьте его так как в строке ниже:
if (($type=="JPG") || ($type=="JPEG")) $open_file=imagecreatefromjpeg($file.$text);

5. В файле admin_work.php и в файле adm_cmd.php находим все функции strcasecmp и заменяем на эту:
strnatcasecmp

6. У кого не работает вход в админку, нужно в файле admin/check_session.php изменить 2 верхние строки так:
<?php
$lang = "";
while (list($var, $val) = each($_GET)) $$var = $val;
while (list($var, $val) = each($_POST)) $$var = $val;

7. >>> Этот пункт по желанию. Рекомендация для быстрой работы викторины, для всех таблиц в базе данных через phpMyAdmin установить вид движка InnoDB. Зайти в phpMyAdmin, нажать на таблицу, затем в Операции через верхнее меню, и там можно выбрать движок базы InnoDB и конвертировать.

8. В чужой старой сборке найдена проблема кодировки при написании в чате, исправлять надо в файле sender.php найдя 2 строки с функцией htmlspecialchars и приведя их к такому виду:
<script language="JavaScript" type="text/javascript"> alert('<?php echo htmlspecialchars($MsgToPass); ?>');</script>
и
$mesg = htmlspecialchars($mesg);

оказалось таких файлов очень много, что это за сборка не понятно, чтобы найти все такие файлы, нужно выполнить команду в папке чата через шелл и во всех найденных функциях вырезать красный код: , NULL, '' :
egrep -n -R 'htmlspecialchars' |grep 'NULL,'

Для запуска чата VOC++ на версии 5.6 достаточно пунктов 1 и 2, а чтобы заработали некоторые модули, нужно сделать ещё и 3.
Пункты 4, 5, 6 это мелкие исправления, таких у каждого может быть много, зависит от сборки! Номер строк может также не совпадать, если файлы менялись. После всех исправлений, не забудьте переключить версию PHP на 5.6 через панель Webserv24 в настройках вашего домена.

327
Геннадий @mychatik
Протестировал на рабочем чате.

После внесения поправок и перехода на PHP5.6 - чат работает, но не принимает кириллицу.
В сообщениях проходят смайлы, цифры и английские буквы. Вместо текста на русском языке - пустое сообщение.

20089
Dimitry @Dimitry
Это единственный баг?
Если да, то может быть стоит им заняться.

20089
Dimitry @Dimitry
Кажется понял причину кодировки, достаточно прописать в common файле такое
ini_set('default_charset','cp1251');

327
Геннадий @mychatik
В принципе, проблема локализована.

Чат заработал! Сообщения идут.

Но сдохла викторина 🙁
Похоже, как отвалился коннект с базой.
В качестве ответа принимает всё подряд и вместо символов правильного ответа - вопросительные знаки.



Потестировал ещё - викторина считает количество знаков и только по этому параметру принимает ответ.
Если знаков меньше, чем в условии вопроса - то не примет ответ, а если больше - то принимает.
Вызов ТОП-10 по команде !топ - работает.

===================

Судя по всему, проблема теперь в mysql_connect - нужно менять на mysqli_connect.
Как-то так...
Расширение — mysql_connect() — устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL.

У меня сделан вывод статистики ответов и награда для пользователей, находящихся в 10-ке лидеров через mysqli_connect - всё работает без изменений.
Но только я поставил обращение к базе через mysql_connect - сразу же пропала статистика.

20089
Dimitry @Dimitry
mysql_connect - работает нормально в 5.6, поэтому должно работать, но в версии 5.6 всё сделано для UTF-8, поэтому нужно видимо и для базы задать кодировку верную, напиши мне лично и решим проблему, потом можем написать все нужные исправления для работы на 5.6. А версию 5.3 я планирую удалить в будущем ...

20089
Dimitry @Dimitry
Викторина исправлена добавлением mb_internal_encoding("cp1251"); - наверху изменил описание.

20089
Dimitry @Dimitry
Градиент исправлен в пункте 2.
Кланы и некоторые модули исправляются в пункте 3.

20089
Dimitry @Dimitry
1й пункт обновлён для правильной работы загрузки файлов.

20089
Dimitry @Dimitry
Добавлен пункт 4 с исправлением, в некоторых чатах может не выводиться gif вложения по хештегу, только jpg работают.

20089
Dimitry @Dimitry
Викторина работает ещё медленнее после обновлений на сервере

Ответ на викторину приходит на 2-3 сек дольше чем раньше. Проблема в том что код VOC++ очень старый и с новой базой данных он работает ещё хуже чем до этого. Если кому то нужно исправить такую же проблему пишите мне, попробуйте просто изменить таблицы в базе с MyISAM => InnoDB.

20089
Dimitry @Dimitry
Добавлен новый пункт 5, решает проблему регистра поиска по нику в админке.

22
Артем @Skriptoff
4й пункт,
if (($type=="JPG") || ($type=="JPEG"))

Это точно файл sender.php в корне? там такой переменной даже нет, я пересмотрел все сборки что у нас на установке стоят, искал и по всем файлам чата.
Возможно это кастомный код

327
Геннадий @mychatik
Skriptoff пишет:

Это точно файл sender.php в корне? там такой переменной даже нет, я пересмотрел все сборки что у нас на установке стоят, искал и по всем файлам чата.
Возможно это кастомный код

Да, точно!
Этот код (он выводит картинки в чат) стоит во всех чатах со старыми вложениями (или там, где эти вложения когда-то стояли).
И вообще, в инструкции по установке вложений (старых) нигде нет этого кода.
Написано только:
Для того, чтобы работали смайлы версии 2.0 и вложения - нужно применять исправленный sender.php

и прилагается файл с ошибкой.
Просмотрел несколько сборок, которые есть у меня - везде с этим косяком.
Что удивительно, до перехода на php5.6, ошибка никак не проявлялась. Всё работало.

20089
Dimitry @Dimitry
Да, работали с чатом mychatik, поэтому может быть только его код, и строки могут не совпадать...
Для запуска чата VOC достаточно пунктов 1 и 2, чтобы заработали некоторые модули, нужно сделать ещё и 3.
Пункты 4, 5, 6 это мелкие исправления, таких у каждого может быть много, зависит от сборки!

45
Инкогнито @Инкогнито
Я конечно извиняюсь, но в 5 пункте не admin_works.php а admin_work.php


=======================

Модератор: Спасибо, исправлено.

45
Инкогнито @Инкогнито
В чате не работают все кнопки админские, пишет "не найден", и банк не работает, есть по этому какие-то действия?

Так же не работал поиск в редакторе, сделали в файле adm_cmd.php пункт 5 и он заработал

20089
Dimitry @Dimitry
Про adm_cmd.php информацию добавил, админские кнопки должны работать, не должно быть связано со сменой версии.
Не найден? Какой урл у этого файла и как выглядит эта страница?
Если что mychatik может помочь, ну или Артем.

45
Инкогнито @Инкогнито
Сделал откат, вернул 5,3 версию пхп все работает хорошо, ставлю снова 5,6 делаю пункты и снова, кнопки админа не работают, а так же админка которая в чате, не работает из замеченного Редактор пользовательских данных (поиск пользователей), Смена топика, Редактор комнат, Банк (но это ладно, это дополнительный мод)

20089
Dimitry @Dimitry
Сделай 5.6 с всеми выполненными пунктами и ссылку скинь, я зайду гляну.
А то завтра уже отключение.