diff --git a/composer.json b/composer.json index ca4383ed..701bac2f 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,10 @@ "patches": { "codeigniter/framework": { "Add support for PHP 8.2 (part1)": "patches/Codeigniter_Framework/v3.1.13/10-php82_support.patch", - "Add support for PHP 8.2 (part2)": "patches/Codeigniter_Framework/v3.1.13/10-php82_support-part2.patch" + "Add support for PHP 8.2 (part2)": "patches/Codeigniter_Framework/v3.1.13/10-php82_support-part2.patch", + "Add support for PHP 8.4 (E_STRICT)": "patches/Codeigniter_Framework/v3.1.13/11-php84_support_E_STRICT.patch", + "Add support for PHP 8.4 (implicit nullable type)": "patches/Codeigniter_Framework/v3.1.13/11-php84_support_fix_implicit_nullable_type_error.patch", + "Add support for PHP 8.4 (session sid)": "patches/Codeigniter_Framework/v3.1.13/11-php84_support_session.sid_length_INI_setting_is_deprecated.patch" }, "kenjis/ci-phpunit-test": { "Add support for PHP 8.2": "patches/Kenjis_CiPhpunitTest/v3.0.4/support_php-8.2.patch" diff --git a/patches/Codeigniter_Framework/v3.1.13/11-php84_support_E_STRICT.patch b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_E_STRICT.patch new file mode 100644 index 00000000..adca79ef --- /dev/null +++ b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_E_STRICT.patch @@ -0,0 +1,38 @@ +Description: remove deprecation notice on php8.4 for E_STRICT +From 831108645a2b68150471035a7e5ced5086da2c51 Mon Sep 17 00:00:00 2001 +From: Bruno Moreira +From: Fab Stz +Origin: https://github.com/pocketarc/codeigniter/commit/831108645a2b68150471035a7e5ced5086da2c51 +Date: Tue, 29 Oct 2024 06:12:23 -0600 +Bug: https://github.com/bcit-ci/CodeIgniter/issues/6301 + +--- a/index.php ++++ b/index.php +@@ -73,7 +73,11 @@ + case 'testing': + case 'production': + ini_set('display_errors', 0); +- if (version_compare(PHP_VERSION, '5.3', '>=')) ++ if (version_compare(PHP_VERSION, '8.4', '>=')) ++ { ++ error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_NOTICE & ~E_USER_DEPRECATED); ++ } ++ else if (version_compare(PHP_VERSION, '5.3', '>=')) + { + error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED); + } +--- a/system/core/Exceptions.php ++++ b/system/core/Exceptions.php +@@ -73,7 +73,11 @@ + E_USER_ERROR => 'User Error', + E_USER_WARNING => 'User Warning', + E_USER_NOTICE => 'User Notice', +- E_STRICT => 'Runtime Notice' ++ ++ # 2048 is E_STRICT, but it's deprecated in PHP 8.4. ++ # We're keeping this here for backwards compatibility. ++ # If we're on older PHP, E_STRICT errors will be labelled correctly, and if we're on PHP 8.4+, this will be ignored. ++ 2048 => 'Runtime Notice' + ); + + /** diff --git a/patches/Codeigniter_Framework/v3.1.13/11-php84_support_fix_implicit_nullable_type_error.patch b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_fix_implicit_nullable_type_error.patch new file mode 100644 index 00000000..60e0ed6c --- /dev/null +++ b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_fix_implicit_nullable_type_error.patch @@ -0,0 +1,36 @@ +Origin: https://github.com/pocketarc/codeigniter/commit/d310726565c12ba99b8037e8fb231ed739258e6e +Bug: https://github.com/bcit-ci/CodeIgniter/issues/6302 +From d310726565c12ba99b8037e8fb231ed739258e6e Mon Sep 17 00:00:00 2001 +From: Bruno Moreira +Date: Tue, 29 Oct 2024 06:34:00 -0600 +Subject: [PATCH] Fixes a few more PHP 8.4 compatibility issues. +Last-Update: 2024-10-30 + +--- a/system/libraries/Encryption.php ++++ b/system/libraries/Encryption.php +@@ -366,10 +366,10 @@ + * Encrypt + * + * @param string $data Input data +- * @param array $params Input parameters ++ * @param array|null $params Input parameters + * @return string + */ +- public function encrypt($data, array $params = NULL) ++ public function encrypt($data, $params = NULL) + { + if (($params = $this->_get_params($params)) === FALSE) + { +@@ -501,10 +501,10 @@ + * Decrypt + * + * @param string $data Encrypted data +- * @param array $params Input parameters ++ * @param array|null $params Input parameters + * @return string + */ +- public function decrypt($data, array $params = NULL) ++ public function decrypt($data, $params = NULL) + { + if (($params = $this->_get_params($params)) === FALSE) + { diff --git a/patches/Codeigniter_Framework/v3.1.13/11-php84_support_session.sid_length_INI_setting_is_deprecated.patch b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_session.sid_length_INI_setting_is_deprecated.patch new file mode 100644 index 00000000..1d703889 --- /dev/null +++ b/patches/Codeigniter_Framework/v3.1.13/11-php84_support_session.sid_length_INI_setting_is_deprecated.patch @@ -0,0 +1,18 @@ +Description: skip deprecated setting of session.sid_length on php8.4 + On php 8.4, this will use the default values of php 8.4 + as per the recommended way to do it. +Bug: https://github.com/bcit-ci/CodeIgniter/issues/6300 +Author: Fab Stz +Last-Update: 2024-10-15 + +--- a/system/libraries/Session/Session.php ++++ b/system/libraries/Session/Session.php +@@ -419,7 +419,7 @@ + { + $bits_per_character = (int) ini_get('session.sid_bits_per_character'); + $sid_length = (int) ini_get('session.sid_length'); +- if (($bits = $sid_length * $bits_per_character) < 160) ++ if (($bits = $sid_length * $bits_per_character) < 160 && PHP_VERSION_ID < 80400) + { + // Add as many more characters as necessary to reach at least 160 bits + $sid_length += (int) ceil((160 % $bits) / $bits_per_character);