Test on PHP 7.2 through 8.4, up from 8.0, and update the checkout and
cache actions to v4. Key the cache on the PHP version and composer.json:
there's no committed composer.lock, so every matrix job was sharing one
vendor cache. Add a Redis service and run the integration suite too,
which the workflow never ran.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
html_to_dom_document() used mb_convert_encoding() with the HTML-ENTITIES
pseudo-encoding, which is deprecated as of PHP 8.2. Encode non-ASCII
characters with mb_encode_numericentity() instead. The resulting DOM is
identical, including invalid byte sequences being dropped.
Also stop passing an empty string to loadHTML(), which throws a
ValueError as of PHP 8.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
removes session tests that were failing with
```
session_name(): Cannot change session name when headers already sent
```
on just a call to `session_name()` in php nightly