Jump to content

4.7.2 Сканер совместимости PHP 8

Featured Replies

Posted
comment_186223

В Invision Community 4.7.2 появился сканер совместимости PHP 8 для сторонних приложений и плагинов.

Пожалуйста, прочитайте этот пост перед обновлением с версии 4.7.1 или ниже.

Зачем нам это нужно?
Базовым языком программирования, который использует Invision Community, является PHP. Последняя версия PHP 8 была выпущена в ноябре 2020 года и содержит множество критических изменений и несовместимостей, которые не имеют обратной совместимости. Некоторые из этих изменений означают, что то, что было безобидным молчаливым уведомлением, теперь является фатальной ошибкой, что означает, что если вы обновитесь с несовместимым кодом, ваше сообщество выдаст фатальную ошибку, которая приведет либо к белому экрану, либо к сообщению об ошибке на уровне сервера в вашем браузере.

Сообщество Invision не может зафиксировать и устранить эти фатальные ошибки. Фатальные ошибки находятся глубже в цепочке выполнения.

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

Что это?
Средство проверки совместимости проверяет все сторонние приложения и плагины, которые вы добавили из Marketplace.

Мы рекомендуем нашим авторам Marketplace тестировать PHP 8, но не все это делают, и поэтому такие приложения и плагины, которые нормально работают с PHP 7.4, не будут работать с PHP 8.

Средство проверки совместимости сканирует весь сторонний код на наличие проблем, которые могут привести к фатальным ошибкам, и, если находит их, отключает приложение или подключаемый модуль при обновлении.

Единственный способ повторно включить приложение или обновить его — обновить его до версии, совместимой с 4.7.2, из магазина.

Могу ли я повторно включить отключенные сторонние плагины и приложения?
Да, если вы уверены, что плагины и приложения нормально работают с вашей текущей версией PHP, вы можете снова включить их до нашего ноябрьского релиза, после чего приложения будут принудительно отключены.

Стоит связаться с авторами ключевых плагинов и приложений, чтобы узнать, есть ли у них версия, совместимая с PHP8, или они планируют выпустить ее к ноябрю, чтобы вы могли подготовиться к ноябрьскому обновлению.

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

Почему сейчас?
Мы уже некоторое время работаем над совместимостью с PHP 8 и призываем наших сторонних авторов сделать то же самое и протестировать PHP 8. В августе мы также проинформировали разработчиков о сканере и о том, что он может сделать с их приложениями. Мы также выпускаем бета-версии Invision Community 4.7 с мая этого года, чтобы дать им как можно больше времени для обновления своих приложений. Внедрение этого изменения болезненно в краткосрочной перспективе, но принесет пользу всем в долгосрочной перспективе.

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

Как всегда, мы рекомендуем делать резервную копию перед любым обновлением, чтобы вы могли легко выполнить откат, если возникнут какие-либо проблемы.

Я использую PHP 7, влияет ли это на меня?
Да, сканер совместимости по-прежнему будет работать при обновлении и проверять наличие проблем с PHP 8, поэтому при обновлении до PHP 8 вы не обнаружите, что ваше сообщество больше не работает.

comment_186227

Обычному человеку все эти пхп 7 и пхп 8 ни о чем не говорят. Да и разницу никто не заметит. Просто блажь программистов: все движутся и мы куда-то движемся.

Edited by Zero108

comment_186231
2 часа назад, Anche сказал:

а PHP 7.4 «устарел», и обновления безопасности прекратятся с ноября, что означает, что он становится небезопасным, поэтому всем придется очень скоро перейти на PHP 8.

те, кто до сих пор сидит на пхп 5.4/5.6 -🗿

comment_186550

Whenever I try to set the PHP version to 8.0 than my current 7.4, my test forum throws 500 Error over AdminCP

What works is the only main page of the website and nothing else!

It's a little pain in the ass that I haven't figured it out what causes the issue yet!

comment_186552
2 часа назад, Orpheus сказал:

Whenever I try to set the PHP version to 8.0 than my current 7.4, my test forum throws 500 Error over AdminCP

What works is the only main page of the website and nothing else!

It's a little pain in the ass that I haven't figured it out what causes the issue yet!

Have you looked at the web server logs? At 500 an error always they will be.

comment_186593

Я один такой везучий и у меня на свежеустановленной 4.7.2.1 не работает этот сканер? Если зайти в саппорт, то кружочек в сканере крутится бесконечно, в логах ошибка ( связанная с count() в самом Scanner.php ).

comment_186596
1 минуту назад, by_ix сказал:

видимо, да. у меня везде ошибки выдаёт.

Судя по всему они не предусмотрели варианта, когда ошибок нет :) Если разрешить приложение с ошибкой, то всё нормально, создается массив ошибок и сканер срабатывает, а если ошибок нет, массив не создается и лезет любимая ошибка с count()

Для любопытных - исправляется заменой в system/Application/Scanner.php (строка 434)

if ( !empty( $methodIssues ) 

на                         

if ( !empty( $methodIssues )  && \is_array($methodIssues)  )

comment_186598

4.6.12.1 :bt:

и не парюсь.

хотя Вам парни большое спасибо, за ошибки все что меня ожидают :bk:

comment_186613
11 часов назад, SlawkA сказал:

спасибо, за ошибки все что меня ожидают

Безумству храбрых поем мы песню. 😀

Edited by Zero108

comment_186614
12 часов назад, SlawkA сказал:

4.6.12.1 :bt:

Invision Community v4.6.8 

и тоже не парюсь)) что может быть стабильнее последней официальной лицензией перед концом срока её)))

Edited by the.bunin

comment_186615
On 9/23/2022 at 12:25 AM, September^^ said:

Have you looked at the web server logs? At 500 an error always they will be.

Nope, not yet...I am so lazy to do that!

I am currently on PHP 7.4, but it seems like that I need to change the PHP version to 8 or 8.1 sooner no matter what!

comment_186658
On 9/23/2022 at 12:25 AM, September^^ said:

Have you looked at the web server logs? At 500 an error always they will be.

It might sound like mbstring extension isn't loaded, but I suppose it does load but still throws an error

Quote

[25-Sep-2022 11:41:02 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function IPS\mb_internal_encoding() in /home/mywebsite/public_html/init.php:558

Stack trace:

#0 /home/mywebsite/public_html/init.php(1435): IPS\IPS::init()

#1 /home/mywebsite/public_html/applications/core/interface/task/task.php(29): require_once('/home/mywebsite/...')

#2 {main}

  thrown in /home/mywebsite/public_html/init.php on line 558

[25-Sep-2022 11:42:01 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function IPS\mb_internal_encoding() in /home/mywebsite/public_html/init.php:558

Stack trace:

#0 /home/mywebsite/public_html/init.php(1435): IPS\IPS::init()

#1 /home/mywebsite/public_html/applications/core/interface/task/task.php(29): require_once('/home/mywebsite/...')

#2 {main}

  thrown in /home/mywebsite/public_html/init.php on line 558

[25-Sep-2022 11:43:01 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function IPS\mb_internal_encoding() in /home/mywebsite/public_html/init.php:558

Stack trace:

#0 /home/mywebsite/public_html/init.php(1435): IPS\IPS::init()

#1 /home/mywebsite/public_html/applications/core/interface/task/task.php(29): require_once('/home/mywebsite/...')

#2 {main}

  thrown in /home/mywebsite/public_html/init.php on line 558

[25-Sep-2022 11:44:01 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function IPS\mb_internal_encoding() in /home/mywebsite/public_html/init.php:558

Stack trace:

#0 /home/mywebsite/public_html/init.php(1435): IPS\IPS::init()

#1 /home/mywebsite/public_html/applications/core/interface/task/task.php(29): require_once('/home/mywebsite/...')

#2 {main}

  thrown in /home/mywebsite/public_html/init.php on line 558

This only happens when I change the PHP version from 7.4 to 8.0

Edited by Orpheus

comment_186669
21 hours ago, Desti said:

sudo apt install php8.n-mbstring (n - your php version suffix)

Do you mean to install mbstring? I guessed the same, but it's already installed/enabled.

And I am using cPanel's PHP Selector!

comment_186683
20 hours ago, Desti said:

run php code

print_r(get_loaded_extensions());

PHP 7.4

Quote

Array ( [0] => Core [1] => date [2] => libxml [3] => openssl [4] => pcre [5] => sqlite3 [6] => zlib [7] => bz2 [8] => calendar [9] => ctype [10] => curl [11] => hash [12] => filter [13] => ftp [14] => gettext [15] => gmp [16] => SPL [17] => iconv [18] => pcntl [19] => readline [20] => Reflection [21] => session [22] => standard [23] => shmop [24] => SimpleXML [25] => mbstring [26] => tokenizer [27] => xml [28] => litespeed [29] => i360 [30] => bcmath [31] => dba [32] => dom [33] => enchant [34] => fileinfo [35] => gd [36] => imagick [37] => imap [38] => intl [39] => json [40] => ldap [41] => exif [42] => mysqlnd [43] => mysqli [44] => odbc [45] => PDO [46] => pdo_mysql [47] => PDO_ODBC [48] => pdo_pgsql [49] => pdo_sqlite [50] => pgsql [51] => Phar [52] => posix [53] => pspell [54] => snmp [55] => soap [56] => sockets [57] => sysvmsg [58] => sysvsem [59] => sysvshm [60] => tidy [61] => timezonedb [62] => xmlreader [63] => xmlrpc [64] => xmlwriter [65] => xsl [66] => zip )

PHP 8.0

Quote

Array ( [0] => Core [1] => date [2] => libxml [3] => openssl [4] => pcre [5] => sqlite3 [6] => zlib [7] => bz2 [8] => calendar [9] => ctype [10] => curl [11] => hash [12] => filter [13] => ftp [14] => gettext [15] => gmp [16] => SPL [17] => iconv [18] => json [19] => pcntl [20] => readline [21] => Reflection [22] => session [23] => standard [24] => shmop [25] => SimpleXML [26] => mbstring [27] => tokenizer [28] => xml [29] => litespeed [30] => i360 [31] => bcmath [32] => dba [33] => dom [34] => enchant [35] => fileinfo [36] => gd [37] => imagick [38] => imap [39] => intl [40] => ldap [41] => exif [42] => mysqlnd [43] => mysqli [44] => odbc [45] => PDO [46] => pdo_mysql [47] => PDO_ODBC [48] => pdo_pgsql [49] => pdo_sqlite [50] => pgsql [51] => Phar [52] => posix [53] => pspell [54] => snmp [55] => soap [56] => sockets [57] => sysvmsg [58] => sysvsem [59] => sysvshm [60] => tidy [61] => timezonedb [62] => xmlreader [63] => xmlrpc [64] => xmlwriter [65] => xsl [66] => zip )

Both load the same type & number of extensions.

I wonder, what is the problem, then?

comment_186685

Orpheus no idea. If i disabled mbstring from command line (phpdismod -v 8.1 -s fpm mbsting) and restart php-fpm, my script return error 500. 

PHP Fatal error:  Uncaught Error: Call to undefined function mb_internal_encoding() in /home/desti/4.7.2.1/test.php:4

You run code via browser or from command line? 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.