Re: Deprecate Undefined Constant Usage in php.ini Files (GH-20060)
On 20/10/2025 10:16, Hans Krentel wrote:
So, there would indeed be a change compared to my earlier answer: I now
propose using only uppercase names for constant resolution (and thus for
the warning you asked about). This would mean:
- Allowing unquoted strings with lowercase characters to pass through
unchanged.
- Restricting constant name resolution to a pattern like:
CONSTANT_NAME [A-Z_][A-Z0-9_]*
...possibly with a minimum length greater than one, as shown.
I don't think this kind of pattern matching is the right way to go. It's perfectly normal in INI files to have all sorts of strings which aren't quoted; looking through the samples provided in the source, I spotted this:
user_agent=PHP
No regex is going to recognise that that should be interpreted as "PHP", not constant("PHP").
As I think I mentioned in an earlier message, the specific problem raised seems to be more to do with string-to-int conversion, rather than the INI parsing itself. Even if the invalid constant is surrounded by quotes, this is not a useful setting:
error_reporting = "X_ERROR"|E_WARNING|E_PARSE|E_NOTICE
Maybe the part of the parser that handles *operators* is what needs a behaviour change instead?
--
Rowan Tommins
[IMSoP]
Thread (8 messages)