Reply to thread

Okay, after further comparison of file changes, I see the following:


It should be noted that PHP does not seem to use the actual PCRE library, but instead writes its own extension based on that library. This inevitably leads to situations where PHP is out of step with PCRE, even if a newer version is installed on your server separately.


- We have multiple versions of PHP installed at once, due to varying software requirements. It looks like we were using PHP 8.1.24 for XenForo 2.3 even after installing 8.3.7, until we noticed that the wrong version was being used and changed it to the newer version. For evidence of that, you can see by the error message I posted that it is using the PHP 8.1.x flavor text "unknown property name after" rather than the PHP 8.2+ text "unknown property after" (source)


- Comparing the source files of PHP 8.3.7, ext/pcre/pcre2lib/pcre2_ucptables.c (source) does indeed define the PCRE Emoji class.


- However, the respective source file in PHP 8.1.24, ext/pcre/pcre2lib/pcre2_tables.c (source) does not. So Emoji is not available in PHP 8.1. According to the file's version history, this variation of the PCRE extension was in use until PHP 8.2.0 RC 1 (source), after which the version with the Emoji class appeared (i.e. pcre2_ucptables.c).


Therefore, use of the Emoji class in PHP 8.x requires PHP 8.2 or higher.


Back
Top Bottom