Now that PHP 7.4 is "end of life", system administrators are strongly encouraged to adopt PHP 8.0. CiviCRM has supported PHP 8.0 for some time now, but adoption so far has been slow. Here are the stats as of today:
One notable setback, is PHP 8 support by extensions. A common problem affecting extensions was a line of code generated by a developer tool ("civix") which was considered valid in the past, but not anymore. The tool has long been fixed, but it requires all extension developers to update their extensions.
The good news is that there has been a lot of progress lately. Most of the actively maintained extensions support PHP 8.0.
I ran a quick scan to detect extensions that are not yet ready. Of the 140 extensions that are "reviewed" and can be installed directly from the CiviCRM interface, 30 of those extensions do not support PHP 8.0.
Please note: if you open a bug report against one of these extensions, please be kind to the maintainers! Many of them have contributed these extensions as part of their work, in the hope that it helps others, but it does not mean that they can provide free support. However, if the maintainer does not respond after a few weeks, we will disable the "reviewed" status of the extension, so that administrators do not accidentally install an extension that does not work with PHP 8.
If the extension is not listed below, then in theory it should work on PHP 8. Extensions that have a checkmark ✔ have been fixed since this blog post was initially published.
- Mailchimp 1066 (fixed in dev)
- ✔ Event Calendar 658 (fixed in version 4.2)
- ✔ Civisualize 633 (fixed in version 6.1)
- ✔ CiviMobileAPI 453 (has PHP warnings, but seems to work)
- ✔ Civi Calendar 379 (fixed in version 3.5.2)
- ✔ Group 2 Summary 339 (fixed in version 1.6)
- ✔ Fancy tokens 302 (fixed in version 5.2)
- ✔ Relationship 2 Summary 178 (fixes in version 1.3)
- ✔ Multisite 177 (fixed in version 2.8)
- ✔ TSYS 150 (fixed in version 2.0)
- ✔ Event Additional Signup 130 (fied in version 1.6)
- ✔ Case Tokens 128 (fixed in version 1.4)
- SMS API 114
- Simple Donate 101
- Event Helper 89
- GoToWebinar 87
- Bootstrap Visualize 85
- Content Tokens 82
- ✔ Civi-RIP 64 (fixed in version 1.1)
- ✔ Outbound Domain Enforcement 58
- ✔ Template Attachments 50
- ✔ Quickbooks Online Synchronization 47
- ✔ Areas 36
- ✔ Donor Search Integration 33
- ✔ Message Media SMS 28
- ✔ Batch Update for Grants via Profile 13
- ✔ Slick Nav 7 (in CiviCRM core since v5.12)
- ✔ DataBC 3
- Mocean SMS API 2
Extensions with the mention "fixed in dev" means that the latest development version has fixed the issue, but the maintainer has not yet published an official release.
There are many more extensions in the directory - around 400 extensions - those that have not been reviewed. Since a fair amount of extensions are abandoned, the list below only shows those that are reportedly used by over 20 CiviCRM sites:
- ✔ Upcoming Birthday Report 412 (fixed in version 1.5.0)
- ✔ Extension File Overrides 213
- Scheduled Communication 210
- Direct Debit for Membership Extras 179
- ✔ Shoreditch on WordPress 160 (fixed in version 1.1)
- ✔ Honeypot 144 (fixed in version 1.1.1)
- Member Only Event 116 (fixed in dev)
- Line Item Report 102
- Email Address Corrector 92 (fixed in dev)
- Outlook CiviCRM Integration 91
- Group Protect 63
- Former Communication Data 55
- Image Resize 49 (fixed in dev)
- Capitalisation Corrector 47
- Activity Type ACL 44 (fixed in dev)
- CiviBooking 44
- Google Analytics Event and e-Commerce Tracking 43
- Opt-in Communication Fields 39 (fixed in dev)
- ✔ Gmaps Helpers 38 (fixed in version 1.2)
- Gift Memberships 35
- ✔ X-Dedupe 35 (fixed in version 1.1-beta1)
- Style Guide 34
- Country Manager 33
- Mandrill Email 33 (fixed in dev)
- ✔ Sendgrid Event Notification Processor 30 (fixed in 4.0, however consider Airmail instead)
- List of nationalities 29
- NameName Spam Contact Custom Search 29
- SMS Conversation 29
- Disabled Page Redirect 28
- Relationship Overview Report 28 (fixed in dev)
- Telerivet SMS 26
- Event Registration Based on Participant Roles 26
- Custom Data Naming 22 (fixed in dev)
- ✔ Reorder Dashboard 22 (fixed in version 1.2)
- Extended Mailing Stats 21
- Public Mailings Archive 21
- Financial Summaries 21
- Geodata Filler 17
In the vast majority of the extensions, the PHP compatibility issues were because of that infamous line in "civix". In some rare cases, it was caused by third-party libraries shipped by the extension.
To fix the civix bug, update civix, then run "civix upgrade
" on the command line. Don't forget to tag a release! If you are in a rush and looking for a quickfix, edit the "civix" file (example.civix.php) and look for "$entry{0}
", replace it with "$entry[0]
".
If you have fixed an extension, please leave a comment here, or message me on the chat (on the "extensions" channel), so that I update the above lists.
A huge thanks to everyone who has pushed forward the issue of PHP compatibility! I will go and fix my extensions now ;-)
Comments
We are currently working on a PHP 8.0 compatible update for de.systopia.birthdays
It will probably come with email birthday notifications if enabled :)
@jofranz Thank you! Let me know when it's done. Considering the high number of users, I can do a very quick review of the extension.
This problem also affects some Drupal 7 modules as well
Thanks for the post, Mathieu!
X-Dedupe now has a PHP8-compatible beta version, see here: https://github.com/systopia/de.systopia.xdedupe/releases/tag/1.1-beta1
Thank you Björn! I have updated the blog post.
I don't know if this is an extension problem but when I tried php8 the send for events registration malfunctioned. It would not send to the cc or bcc people listed.
@the_artifactory Did it work before on PHP 7.4? It seems unlikely, but I'll keep an eye and will try to test.
We released a PHP 8 compatible birthday update: https://civicrm.org/extensions/upcoming-birthday-report
Quick update: the list of extensions in the blog post has been updated to reflect those that have been fixed since this was initially written. We have also started removing the "reviewed" status of extensions that have not yet been fixed (and will add it back once it's fixed).
If you need help maintaining your extension, please ping me on the mattermost chat (@bgm on https://chat.civicrm.org/civicrm/channels/extensions/)
We had to disable angular profiles 4.7.31-1.1.1 to get civicrm 5.61.4 to run under php 8.0