Upgrading to v 7.14.2 showed failure of our custom code (from the Apache error.log):
…
— PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in …\V7.14.2\modules\SavedSearch\SavedSearch.php:488 Stack trace:
…V7.14.2\data\SugarBean.php(5228): SavedSearch->fill_in_additional_list_fields()
…V7.14.2\data\SugarBean.php(5185): SugarBean->process_full_list_query(’ SELECT saved_…', true)
…V7.14.2\modules\someCustomAddOn\customOne.php(28): SugarBean->get_full_list(‘saved_search.na…’, ‘saved_search.se…’, true)
…
The code below caused no errors in prior to the PHP 8.1 upgrade (required for v7.14.2)
$sq = BeanFactory::newBean(‘SavedSearch’);
$sched=‘.schedule.’;
$where = “saved_search.search_module = ‘someCustomAddOn’ and saved_search.name<>‘$sched’”;
$q_list = $sq->get_full_list(“saved_search.name”, $where,true); ← line 28 causes the error
The PHP 8 error “Cannot access offset of type string on string in…” has been reported in upgrades of other software unrelated to SuiteCRM.
Perhaps this has been seen/resolved by some development team?
The problem here is that in PHP 7, this code error used to throw a ‘Warning’ and continue running, but now in PHP 8, it’s a fatal error (crash) and it stops. Don’t worry, it’s an illegal string offset error, it’s probably a pretty easy fix! To fix it in your custom code, make sure you’re not sending a parameter that will cause this illegal string offset error! At some point soon, they’ll fix it in the framework, to not crash when an illegal string offset parameter comes in!
@chris001 I just did this upgrade with these results:
7.12.14 → 7.14.2 Results…
Start PHP 8.1 —no go
Start PHP 8.0 --no go
Start PHP 7.4 — Works and you can login and everything still works, then switch to PHP 8.1 So far so good!
(addition: I think I might have started my last upgrade on PHP 8.0, when I got the white screen I switched to 7.4 and then did the rest of the upgrade in 7.4. I didn’t get any PHP version errors so maybe this is a way of bypassing).
Hey @paperless just did the upgrade. Reviewing it in my head now, I think I tried first on PHP 8.0 then when I got the blank screen, I changed the PHP version back to 7.4 refreshed the upgrade wizard and it worked, finished the upgrade and then switched to 8.1.
Trying to upgrade from 7.12.1 to 7.14.2 to no avail and ended with a fresh install of 7.14.2.
Also made progress with changes to httpd.conf to accommodate php 8.1 and references to BeanFactory::newBean(‘SavedSearch’) in our code. So far so good until the next hiccup.
Thanks for your inputs.