Поддержка bbPress Крах плагина форума bbpress… И ошибки array_filter() и array_unique()

  • Решено esc111

    (@esc111)


    Сам я в php вообще не силен.
    Установил плагин форума bbpress, потом еще парочку плагинов на свой (тестовый) сайт на хостинге. Форум упал. с ошибкой:
    Fatal error: operator not supported for strings in ....wp-content/plugins/bbpress/includes/forums/functions.php:1800

    Нарыл в инете, что нужно удалить квадратные скобки кое где. в коде этого файла. Теперь форум запускается но выводит ошибку:

    
    Warning: array_filter() expects parameter 1 to be array, string given in /storage/h6/818/965818/public_html/wp-content/plugins/bbpress/includes/forums/functions.php on line 1836
    
    Warning: array_unique() expects parameter 1 to be array, null given in /storage/h6/818/965818/public_html/wp-content/plugins/bbpress/includes/forums/functions.php on line 1836

    На 1836 строке такой код:

    	// Add the statuses
    		$posts_query->set( 'post_status', array_unique( array_filter( $post_stati ) ) );
    	}
    

    Что делать ума не приложу. Очень прошу помощи.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Модератор Yuri

    (@yube)

    Нарыл в инете, что нужно удалить квадратные скобки кое где. в коде этого файла

    Просто удалить? Тогда это очень вредный совет.

    Судя по упоминанию квадратных скобок, это, возможно, декларация массива в стиле php 5.6. Стоит поднять версию php до необходимой. Или, на крайний случай, переписать фрагмент кода в «старом» стиле (с использованием array), но таких мест может быть много, да и кроме этого есть отличия.

    UPD Скачал, посмотрел. В актуальной версии плагина строка 1800 содержит
    $post_stati[] = bbp_get_public_status_id();
    Это не то, что я подумал.
    Но тем не менее, квадратные скобочи тут удалять все равно категорически нельзя.

    • Ответ изменён 7 лет, 1 месяц назад пользователем Yuri.

    Хм… Вот ветка, откуда я это взял.
    Форум-то заработал, это уже хоть что-то.
    Думаю он бы точно не заработал, и остался бы лежать если бы в коде
    $post_stati[] = bbp_get_public_status_id();
    Скобки [] были бы нужны. Думаю это баг.
    А на хостинге Текущая версия: PHP 7.1. Как и изначально и была.

    Настройки форума менял только через консоль, и вообще все делал только стандартными методами.
    Самое интересное, что я сначала все действия проделал на своем компе, и на нем все ок. (специально, чтобы не было такой ситуации)

    Переустановка не дает результата… Почему? не пойму. Ведь я удаляю все файлы форума и создаю их с нуля!!

    Закинул такой же файл с локального сайтика (такой же файтик с теми же параметрами и плагинами) и форум опять упал….

    Чет не могу написать пост… Ответы на модерации чтоли????? Или у меня траблы? А то в топиках: «Правила форума» «Вопросы и ответы» Ничего про это не написано. (Если на модерации, то прошу меня извинить)

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Теперь форум запускается но выводит ошибку.

    Квадратные скобки верните на место 🙂

    Какая у вас версия PHP? Если 7.1.x — попробуйте текущую альфа-версию, в ней ошибка исправлена.

    Модератор Yui

    (@fierevere)

    永子

    Чет не могу написать пост… Ответы на модерации чтоли????? Или у меня траблы?

    акисмет вас не любит, если не пропускает — не надо отправлять еще раз, все равно поставит на модерацию, а нам потом вычищать дубли

    акисмет вас не любит, если не пропускает — не надо отправлять еще раз, все равно поставит на модерацию, а нам потом вычищать дубли

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

    Квадратные скобки верните на место 🙂

    Какая у вас версия PHP? Если 7.1.x — попробуйте текущую альфа-версию, в ней ошибка исправлена.

    Ну верну, и что? Форум накроется вообще, проверял. Там почему-то три строчки со скобочками ему не нравятся.

    Да PHP 7.1.0. Но обновить я его не могу, хостинг бесплатный, какой дали, такой и пользую. И на своём компе с PHP 7.0.1 все работает с теми же настройками и дополнениями. Думаю надо как то разрабам написать, что что-то не то с bbpress.

    • Ответ изменён 7 лет, 1 месяц назад пользователем esc111.
    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Форум накроется вообще, проверял.

    Версия 2.6, которая сейчас в разработке и на которую я дал ссылку, не накроется. Она используется на этом форуме 🙂

    Да PHP 7.1.0. Но обновить я его не могу

    В данном случае нужно не обновить, а наоборот — либо понизить версию PHP до 7.0.x и использовать bbPress 2.5, либо оставить 7.1.x и использовать bbPress 2.6.

    Думаю надо как то разрабам написать, что что-то не то с bbpress.

    Уже написали и исправили, я дал ссылку на тикет в багтрекере.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Версия 2.6, которая сейчас в разработке и на которую я дал ссылку

    Со ссылкой я, увы, ошибся — в альфа-версии этого исправления нет, но оно есть в 2.6-beta-2.

    Со ссылкой я, увы, ошибся — в альфа-версии этого исправления нет, но оно есть в 2.6-beta-2.

    Спасибо…. Заработало… Вот бы еще в описании плагина написали, что не совместим с PHP 7.1

    Модератор Yui

    (@fierevere)

    永子

    очень многие плагины и темы еще не совместимы с PHP 7.1
    в описании это не пишется обычно потому, что или автор не в курсе пока,
    или в курсе и вносит обновления совместимости, даже не такие уж и старые версии WP щедро сыпят предупреждения о совместимости кода в лог ошибок с 7.1

    тут в целом не проблема плагина или WordPress, а скорее всей экосистемы веб приложений для PHP, каждая новая версия PHP привносит изменения, которые не очень или очень не совместимы с предыдущей версией

    вот например новости о релизе 7.1
    http://php.net/archive/2016.php#id2016-12-01-3
    руководство по миграции кода
    http://php.net/manual/en/migration71.php
    изменения несовместимые с предыдущими версиями
    http://php.net/manual/en/migration71.incompatible.php

    если сказать проще — новое это не значит лучшее.
    И уж тем более если речь идет о PHP сравнительно недавно прыгнувшей с PHP5 на PHP7
    Что рекомендуется сейчас:
    Всё по максимуму работает на PHP 5.6 , версия имеет длительную поддержку до конца следующего года
    Активно обновляемые приложения (WP, основные плагины и темы) хорошо и без проблем работают с PHP 7.0 (текущая версия 7.0.16)
    Версия 7.1 рекомендуется для разработчиков и энтузиастов, т.к. возможны несовместимости и проблемы.
    Текущая версия 7.1.2

    Если ориентироваться на опыт и нумерацию версий, то экосистема расширений PHP (PECL) и активно разрабатываемые и обновляемые приложения подтягиваются на беспроблемный уровень примерно где-то к 10-му релизу, т.е. чтобы активно перейти на 7.1 как основную версию, лучше использовать 7.0.x до тех пор пока 7.1 не достигнет версии 7.1.10

    Ещё раз огромная благодарность. Все объяснили, помогли, очень тепло встретили новичка. Вы молодцы!!

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Крах плагина форума bbpress… И ошибки array_filter() и array_unique()» закрыта для новых ответов.