Propose changes to warning message in declare(encoding=...) when encoding is not a multibye-required encoding method
| From: | LamentXU | Date: | Sat, 02 May 2026 08:50:21 +0000 |
| Subject: | Propose changes to warning message in declare(encoding=...) when encoding is not a multibye-required encoding method | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-130741@lists.php.net to get a copy of this message | ||
Hi internals,
I am writing to ask for suggestions in bug Issue #21538 in php-src [1]. Currently when
zend.multibyte=0, declare(encoding=...) will emit a warning for whatever the encoding is:
"PHP Warning: declare(encoding=...) ignored because Zend multibyte feature
is turned off by settings in XXX"
And the problem is when the encoding is ASCII or UTF-8, which is, not a multibyte encoding method,
the warning will still be emitted. So, if zend.multibyte=0 and you use files with
declare(encoding=ASCII) it will emit the error message to make people want to remove them.
Now, since declare(encoding=UTF-8) behaves identically whether zend.multibyte is on or off, the
warning is quite misleading. Also I think people might mostly use them as documenting codes to tell
tools how to decode them because when zend.multibyte=0, PHP already parses source files as UTF-8 by
default.
However, it is also reasonable to say people might want to use these warnings to check if their code
bases have useless codes.
So I would suggest to change the warning message in those cases to
“PHP Warning: declare(encoding='UTF-8(or ASCII)') is useless, remove it.”
to make things clearer.
This would be a very minor change and do not worth a separate RFC. However, I think it is still
important to send a email to gather opinions :) Also thank @alexdowad for giving me ideas. TiA :)
--Weilin Du
[1]: https://github.com/php/php-src/issues/21538