Take the State of PHP 2026 Survey →

Case-insensitive extension names in ini_get_all() View as Markdown

Under discussion
▴ 0 ▾ 0
community vote
Authors
Weilin Du, weilindu@php.net
Date
2026-10-17
Version
1.0
Implementation
TBD
Source
wiki.php.net/rfc/case_insensitive_ini_get_all

Vote

Implement case-insensitive extension names in ini_get_all() as outlined in the RFC? no votes
Yes · No · Abstain

Discussions on the mailing list

RFC text

Copied from wiki.php.net, last synchronized Oct 16, 2026 17:46 UTC

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.

Vote: Implement case-insensitive extension names in ini_get_all() as outlined in the RFC? — Yes: 0 · No: 0 · Abstain: 0 (closed)

Patches and Tests

TBD.

References