PHP RFC: Case-insensitive extension names in ini_get_all()
- Version: 1.0
- Date: 2026-10-17
- Author: Weilin Du, weilindu@php.net
- Status: Under Discussion
- Implementation: TBD
- Discussion thread: Initial discussion Official RFC thread
Introduction
PHP's extension-query functions handle extension names inconsistently. extension_loaded(), get_extension_funcs(), and phpversion() already accept case-insensitive names, while ini_get_all() requires lowercase names:
<?php extension_loaded('Pcre'); // true get_extension_funcs('Pcre'); // array of function names phpversion('Pcre'); // extension version string ini_get_all('Pcre'); // E_WARNING, then false ?>
This RFC proposes making ini_get_all() case-insensitive so the same extension name can be used consistently across all four functions, without callers needing to normalize it for one particular API.
Proposal
Resolve the $extension argument using ASCII case-insensitive matching, independently of the current locale. This applies to both values of $details (the second parameter).
<?php // PHP 8.7: var_dump(ini_get_all('pcre') === ini_get_all('Pcre')); // bool(true) var_dump(ini_get_all('pcre', false) === ini_get_all('PCRE', false)); // bool(true) ?>
Backward Incompatible Changes
Names differing only in capitalization from a loaded extension now succeed instead of raising a warning and returning false. Code relying on that failure will observe different behavior.
Existing successful calls are unaffected.
Proposed PHP Version(s)
PHP 8.7
RFC Impact
The ini_get_all function will be more consistent with the rest of the functions in the php core concerning extension's name when it comes to case-sensitiveness.
Voting Choices
A two-thirds majority is required. Voting has not started; the closing timestamp will be added when scheduled.
Patches and Tests
TBD.