Skip to content

chore: Add support for PHP 8.6. - #6336

Closed
pocketarc wants to merge 70 commits into
bcit-ci:developfrom
pocketarc:chore/php-8.6
Closed

pocketarc wants to merge 70 commits into
bcit-ci:developfrom
pocketarc:chore/php-8.6

Conversation

@pocketarc

Copy link
Copy Markdown

No description provided.

pocketarc and others added 30 commits September 13, 2025 06:57
Signed-off-by: Bruno Moreira <bruno@terraduo.com>
* Adding PHP 8.2 support

* Adds $uri prop in Router, and AllowDynamicProps attribute for CI_Controller

* Adding missing `dest_image` property in CI_Image_lib

---------

Co-authored-by: George Petculescu <gxgpet@gmail.com>
Co-authored-by: George Petculescu <gxgpet@users.noreply.github.com>
Co-authored-by: Roger <roger.r.oliveira@unesp.br>
Due to PHP 8.2 deprecation of dynamic property creation, we can explicitly declare all _compile_* properties in the CI_Profiler class. These properties are known as they are created based on the $_available_sections array. This would be a clearer approach than just using #[AllowDynamicProperties]
timezones() can return either a specific timezone or the whole array.
…. finfo_open() returns an finfo object (not a resource) since PHP 8.1, which is automatically freed when it goes out of scope.

Fixes #34.
* Fixes XML-RPC compatibility with PHP 8

* Adds PHPUnit test for XML-RPC lib

---------

Co-authored-by: George Petculescu <gxgpet@gmail.com>
pocketarc and others added 29 commits December 27, 2025 10:46
…hange. The highlight_string() output format changed in PHP 8.3, not 8.4.
The open() method in Session_redis_driver returns $this->_success even when Redis::connect() fails (the else branch on a failed connection). This causes PHP's session_start() to believe the handler is ready, but subsequent read() calls fail, producing:

session_start(): Failed to read session data: user (path: /var/lib/php/sessions)

This was originally reported and fixed in the upstream bcit-ci/CodeIgniter repo:

Issue: bcit-ci#5779
PR: bcit-ci#5781
The fix was merged into CI3 for the 3.1.11 milestone but appears to have been lost when the 3.2.0-dev branch was created, which this fork is based on.

The fix changes the failed-connection else branch to log an error and fall through to return $this->_failure instead of incorrectly returning $this->_success.
…ward compatibility).

* fix: restore form_prep() removed in 3.2.0-dev.

* fix: restore do_hash() removed in 3.2.0-dev.

* fix: restore br() and nbs() removed in 3.2.0-dev.

* fix: restore trim_slashes() and repeater() removed in 3.2.0-dev.

* fix: restore standard_date() and nice_date() removed in 3.2.0-dev.

* fix: restore is_cli_request() removed in 3.2.0-dev.

* fix: restore prep_for_form() removed in 3.2.0-dev.

* fix: restore system_url() removed in 3.2.0-dev.

* docs: rework upgrade guide and README for the 3.2+ maintenance fork.

* fix: restore 'unique' and 'encrypt' aliases in random_string() removed in 3.2.0-dev.

* fix: restore 'dash' and 'underscore' aliases in url_title() removed in 3.2.0-dev.

* fix: restore 'anchor_class' option in Pagination removed in 3.2.0-dev.

* fix: restore $_after parameter in add_column() removed in 3.2.0-dev.

* docs: remove restored items from 3.2+ upgrade removal list.

* fix: restore Smiley Helper removed in 3.2.0-dev.

* fix: restore Javascript Library removed in 3.2.0-dev.

* docs: remove restored items from 3.2+ upgrade removal list.
Update Edge user agent detection for legacy version and modern version that detect Edge with keyword 'Edg'
* Update Edge user agent detection for legacy version

Update Edge user agent detection for legacy version and modern version that detect Edge with keyword 'Edg'

* fix: Match legacy Edge before Chromium Edge.

---------

Co-authored-by: Muhammad Nobin <nobin@live.com>
PHP 8.6 deprecates session save handlers implementing SessionHandlerInterface without a create_sid() method, ahead of making it required in PHP 9.0.

Add create_sid(): string to CI_SessionWrapper delegating to session_create_id(). This hook has been supported since PHP 7.1 and maintains identical behavior on PHP 8.0-8.5 while clearing the PHP 8.6 deprecation.

Verified across PHP 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, and 8.6 beta 2:
- New session start and existing session resumption
- session_regenerate_id() and session_regenerate_id(true)
- Explicit session_create_id() calls
- Zero warnings or deprecations on PHP 8.0-8.5; PHP 8.6 warning cleared
Update CI_VERSION in system/core/CodeIgniter.php from 3.4.2 to 3.4.4
to match the current release version.
 #51.

Handle the HTML format introduced in PHP 8.3 when removing the injected closing tag. Keep support for older PHP versions and add a regression test for profiler queries.
…d, drop imagick (unused), and fix the composer cache key.
@pocketarc pocketarc closed this Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants