Proposal for 2 new magic constants

php.internals

Unnamed Person

101 days ago
Hi all, I would like to propose two new magic constants to PHP: __HOME__ and __USER__ These would allow us easy ways to get the following information in our scripts: Constant Results __USER__ username __HOME__ /home/username To get that info now we have to resort to things like: define('HOME_PATH', implode('/', array_slice(explode('/', __DIR__), 0, 3))); define('USER_NAME', explode('/', HOME_PATH)[2]); Personally, I use these a lot and it would be nice to call a simple constant instead of a line of code. I think others could benefit from them, as well, hence my proposal. So, I'd like to hear what others think before presenting an RFC. Do they sound beneficial to anyone else? Thanks, Marc P.S. Hopefully I'm posting this to the correct list. If not, please point me to where I need to be.

Jordi Kroon

101 days ago
On 23/05/2026 6:38 pm, php@s22.us wrote:
> I would like to propose two new magic constants to PHP: __HOME__ and > __USER__
I strongly oppose this idea. This kind of information is environment-specific and does not really belong as a language-level magic constant. Existing magic constants describe source context (`__FILE__`, `__DIR__`, etc.), not host or user environment details. For CLI usage, this information is usually already available through environment variables such as `HOME` and `USER`, which is the more appropriate place for this kind of information. In isolated environments such as containers or chroots, exposing user or home-directory information is also something we generally should avoid. More importantly, I think we should discourage PHP web applications from reaching into other parts of the system and instead encourage them to stay within their application/web directories.
> P.S.  Hopefully I'm posting this to the correct list.  If not, please > point me to where I need to be.
This is the correct list. Often before starting an official RFC an e-mail is sent to this mailing list to see if a certain topic/idea has interest.
-- Regards, Jordi Kroon

Andrey Andreev

101 days ago
Hi, On Sat, May 23, 2026 at 8:23 PM Jordi Kroon <jordikroon@me.com> wrote:
> > This kind of information is environment-specific and does not really > belong as a language-level magic constant. Existing magic constants > describe source context (`__FILE__`, `__DIR__`, etc.), not host or user > environment details. > > For CLI usage, this information is usually already available through > environment variables such as `HOME` and `USER`, which is the more > appropriate place for this kind of information. >
I concur, and that settles the argument for me. However ...
> In isolated environments such as containers or chroots, exposing user or > home-directory information is also something we generally should avoid. > > More importantly, I think we should discourage PHP web applications from > reaching into other parts of the system and instead encourage them to > stay within their application/web directories.
This default mindset of "PHP is for web and everything must conform to that" is my biggest pet peeve on this list. It would serve PHP better to not impede more general purpose use cases. Cheers, Andrey.

Larry Garfield

100 days ago
On Sat, May 23, 2026, at 12:21 PM, Jordi Kroon wrote:
> On 23/05/2026 6:38 pm, php@s22.us wrote: > >> I would like to propose two new magic constants to PHP: __HOME__ and >> __USER__ > > I strongly oppose this idea. > > This kind of information is environment-specific and does not really > belong as a language-level magic constant. Existing magic constants > describe source context (`__FILE__`, `__DIR__`, etc.), not host or user > environment details. > > For CLI usage, this information is usually already available through > environment variables such as `HOME` and `USER`, which is the more > appropriate place for this kind of information. > > In isolated environments such as containers or chroots, exposing user or > home-directory information is also something we generally should avoid. > > More importantly, I think we should discourage PHP web applications from > reaching into other parts of the system and instead encourage them to > stay within their application/web directories. > >> P.S.  Hopefully I'm posting this to the correct list.  If not, please >> point me to where I need to be. > > This is the correct list. Often before starting an official RFC an > e-mail is sent to this mailing list to see if a certain topic/idea has > interest. > > -- > Regards, > > Jordi Kroon
I am also -1 here, for the reasons Jordi lists. In cases where quick access to that information is relevant or useful, there are better alternatives to magic constants. --Larry Garfield

Unnamed Person

100 days ago
> In cases where quick access to that information is relevant or useful, > there are better alternatives to magic constants.
Larry, What did you have in mind? If it's better than the workaround that I posted in my original email, I'd love to hear it. I'm just looking for a simple way to grab that information directly from PHP. Thanks, Marc

Andrey Andreev

100 days ago
Hi Marc, getenv('HOME') and getenv('USER') are probably what you're looking for, although HOME might be a non-Windows thing. Both variables should also be available in $_SERVER. Cheers, Andrey.