Сообщаем об ошибках phpBB 3.3.x разработчикам

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Об ошибках, выявленных в работе phpBB 3.3 Proteus, сообщаем в этой теме.
Ошибками является некорректная работа ядра phpBB, подтвержденная на последней актуальной версии phpBB, требующая устранения в коде ядра, и не связанная с работой расширений, сторонних стилей оформления, неверной работой серверного оборудования или серверного софта, а также с некорректными действиями администратора.
Запросы поддержки также не размещаются в данной теме.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

Возникло только в одной теме после удаления двух последних сообщений в корзину.
Показывается только у модератора, то есть, у того, кто видит, что сообщения удалены.
Получается, самое последнее сообщение - единственное на странице. И предпоследнее в теме - последнее на предпоследней странице.
Полистал тему - ошибка появляется на тех страницах, где последнее сообщение на странице удалено в корзину. Если это удалённое сообщение восстановить - ошибка исчезает.

Пробовал:
- перенести любое сообщение из этой темы в эту же темы (чтобы индексы пересчитались)
Не помогло - ошибка не исчезла.

Пробовал:
- удалять сообщения этих пользователей в других темах
- удалять последнее и предпоследнее сообщения в других темах
Ошибку в других темах повторить не удалось.

В теме 34621 сообщений, включая удалённые в корзину. 34353 сообщений, не считая удалённых. Тема не самая большая на форуме - есть и гораздо длиннее, но в них повторить такую ошибку не удалось.
Ссылку на тему тут не публикую, поскольку у пользователей ошибку не видно. Могу дать модераторский доступ к своему форуму.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Kuskow, повторить не удалось. По тексту ошибки выглядит так, как будто пользователь с user_id равным 48 удалил пост, но пользователя с user_id равным 48 нет в таблице phpbb_users.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

rxu писал(а): 28.01.2026 8:17 По тексту ошибки выглядит так, как будто пользователь с user_id равным 48 удалил пост
Да, всё так и было - именно он (то есть, я) и удалил.
rxu писал(а): 28.01.2026 8:17 но пользователя с user_id равным 48 нет в таблице phpbb_users.
Ага, понятно. Но очень странно. Потому что этот пользователь точно есть, это я - первый зарегистрировавшийся на форуме пользователь, он же модератор, он же администратор. Пофиль показывается нормально. Не удалялся никогда.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Ошибку получается повторить, если в таблицу posts в строке удаленного в корзину сообщения принудительно вписать в поле post_delete_user идентификатор несуществующего пользователя (любое число, user_id с которым не существует в таблице пользователей).
Проверьте свой, если всё-таки пользователь 48, или нет.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

Пользователь 48 точно существует - это я. Номер помню с самого начала. Первые пользователи вообще запоминаются по номерам.
Screenshot 2026-01-28 11.43.36.png

Теперь понятно, где корень этой ошибки. Она существует ооооочень давно. Более 12 лет точно. Иногда в удалённых сообщениях не показывается, кто удалил сообщение - вместо этого пишется "Гость". И в логах тоже так же записывается.
Screenshot (38).png

Ещё даже не было у меня этого форума (я был модератором на другом форуме) - и там тоже было так же, хоть там и не было даже удаления в корзину - сообщения удалялись безвозвратно сразу. И кто-то объяснял, почему так происходит, но я не вникал.

Отправлено спустя 25 минут 5 секунд:
И вот, как только после этого последнего удалённого сообщения появилось ещё одно, удалённое сообщение перестало быть последним, и ошибка пропала, и удаляющий теперь виден:
Screenshot (39).png
Отправлено спустя 11 минут 21 секунду:
valdos писал(а): 22.07.2015 11:25Иногда бывает, после удаления поста модератором, в уделенном посте пишется "Гость" удалил сообщение автора "имя автора".
Если перейти в профиль "Гость", то переход осуществляется в правильный профиль модератора.
Вопрос снимается. Помогла простая чистка Кэша.
Чистка кэша не помогла. Вопрос остаётся. Я наблюдаю эту проблему с 2013 года. За 12 лет ничего не поменялось.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Kuskow писал(а): 28.01.2026 10:22 За 12 лет ничего не поменялось.
Потому, что надежно повторить проблему и выявить причину не удается.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

А сама эта 1870 строка разве не вызывает сомнений?

Код: Выделить всё

$user_cache[$row['post_delete_user']] = $post_delete_list[$row['post_delete_user']];
То есть, судя по названиям:
$user_cache - список пользователей
$post_delete_list - список сообщений
Получается, вместо данных о пользователе запихиваем данные о сообщени (из списка мягких в список тёплых). Или нет?

Да и вот это уже должно вызвать сомнение, как мне кажется:

Код: Выделить всё

$post_delete_list[$row['post_delete_user']]
Из списка сообщений берём элемент по номеру пользователя?

Отправлено спустя 10 минут 12 секунд:
А когда мы попадаем на эту 1870 строку - когда удаливший модератор первый раз встретился на странице именно в удалённом сообщении. То есть, когда информацию о пользователе-удалителе нужно занести в кэш. То есть, когда удаливший сообщение модератор ещё не занесён в кэш по другим поводам.
rxu писал(а): 28.01.2026 8:17 повторить не удалось
Нужно, чтобы модератор зашёл на страницу, в которой есть сообщение мягко удалённое другим модератором. И при этом на странице нет от этого удалившего модератора:
- сообщений;
- благодарностей;
- Сейчас этот форум просматривают.

Отправлено спустя 8 минут 4 секунды:
rxu писал(а): 28.01.2026 9:31идентификатор несуществующего пользователя
Да, только не пользователя, а поста.
В общем, эта ошибка возникает тогда, когда соблюдаются два условия:
1. До обработки удалённого сообщения в предыдущих на странице сообщениях не встречалось упоминания пользователя, который удалил это сообщение (48). То есть, он не был автором предыдущих сообщений, он не ставил лайк за предыдущие сообщения.
2. В списке удалённых сообщений, присутствующих на странице нет такого, у которого номер сообщения совпадает с номером удалившего пользователя (модератора) - в моём случае 48. Значит, нет на странице сообщения p=48.

Вот как-то так.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Kuskow, ничего из этого не вызывает никаких сомнений, этот код прекрасно работает везде в 99,99% случаев.
Надо найти тот один сценарий, при котором он не работает.

Отправлено спустя 28 секунд:
Теоретизировать бессмысленно. Вот как-то так.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

То есть, выполняется эта строка с такими значениями:

Код: Выделить всё

$user_cache[48] = $post_delete_list[48];
$user_cache[48] - сорок восьмой пользователь https://www.phpbbguru.net/community/memberlist.php?mode=viewprofile&u=48
$post_delete_list[48] - сорок восьмое сообщение https://www.phpbbguru.net/community/viewtopic.php?p=48#p48
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Kuskow писал(а): 28.01.2026 19:22 То есть, выполняется эта строка с такими значениями:
rxu писал(а): 28.01.2026 19:20 Теоретизировать бессмысленно.
Получится найти, как воспроизвести - пишите.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

Да-да, уже пишу:
rxu писал(а): 28.01.2026 19:20 Надо найти тот один сценарий, при котором он не работает.
Так вот же он в условии на строчку выше (1968):

Код: Выделить всё

if ($row['post_delete_user'] && !isset($user_cache[$row['post_delete_user']]))
Условие соблюдается при одновременном соблюдении двух условий:
1) if $row['post_delete_user'] - если сообщение мягко удалено (помечено как удалённое, но существует в базе)
2) if !isset($user_cache[$row['post_delete_user']]) - если ранее информация об удалившем пользователе не попала в кэш
rxu писал(а): 28.01.2026 8:17 повторить не удалось
Модератор заходит на страницу, где есть сообщение, удалённое другим модератором. И больше никаких упоминаний об этом удалившем модераторе нет на этой странице, то есть, он:
- не участвовал в обсуждении;
- не заходил на эту страницу в течение 5 минут;
- не ставил лайки;
- не был процитирован другими пользователями.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17230
Стаж: 20 лет 1 месяц
Откуда: Красноярск
Благодарил (а): 585 раз
Поблагодарили: 1779 раз

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение rxu »

Kuskow писал(а): 28.01.2026 19:33 Модератор заходит на страницу, где есть сообщение, удалённое другим модератором. И больше никаких упоминаний об этом удалившем модераторе нет
rxu писал(а): 28.01.2026 8:17 повторить не удалось
Всё работает корректно.
Изображение
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 424
Стаж: 10 лет
Откуда: 🇰🇿 Караганда
Благодарил (а): 27 раз
Поблагодарили: 42 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Kuskow »

rxu, Да, Вы правы. Всё, что я вчера написал про эту ошибку - бредятина полнейшая. Прошу прощения, был неправ, вспылил. Сегодня с утра разобрался, сейчас напишу, от чего это происходит. И да, это не ошибка движка phpBB, поэтому напишу в другом месте.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5538
Стаж: 21 год 5 месяцев
Откуда: Питер
Благодарил (а): 187 раз
Поблагодарили: 774 раза

Re: Сообщаем об ошибках phpBB 3.3.x разработчикам

Сообщение Siava »

Заметил у себя в логах ошибку связанную с несуществующей таймзоной Europe/Kiev. Причём поймал её я сам с мобильного браузера Edge.. вот теперь даже задумался не снести ли его от греха подальше) ошибка была единожды и больше не повторялась.

В языковых файлах в common.php до сих пор

Код: Выделить всё

		'Europe/Kiev'		=> 'Europe/Kiev',

Код: Выделить всё

 		'Europe/Kiev'		=> 'Европа/Киев',
Хотя было переименование таймзоны в Europe/Kyiv
https://www.php.net/manual/en/timezones.europe.php

Но это для совместимости со старыми версиями PHP по идее.. в общем я запутался)

Но вот что ещё заметил на форуме. Если выполнить запрос

Код: Выделить всё

SELECT * FROM `phpbb_users` WHERE `user_timezone`='Europe/Kiev';
Затем выбрать из найденного ID пользователя и зайти в администрирование его, дальше в выпадающем меню сверху выбрать Личные настройки, то часовой пояс отображается как не выбранный:
sshot-407.png
Браузер Firefox, Chrome - одинаково.

Если же сделать SQL выборку по

Код: Выделить всё

SELECT * FROM `phpbb_users` WHERE `user_timezone`='Europe/Kyiv';
и дальше в админке выбрать личные настройки пользователя, то с таймзоной будет всё в порядке.

PHP 8.4.22
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)

Вернуться в «Поддержка phpBB 3.3.x»