Из командной строки я получаю следующее:
>echo %ProgramFiles%
C:\Program Files
Однако в некоторых приложениях (в данном случае PHP, хотя я видел такое же поведение в httpd.conf Apache), это:
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
Почему это?
Справочная информация: я разрабатываю сценарии, которые не зависят от операционной системы хоста 32-битной или 64-битной, и для файлов конфигурации это прекрасно работает. В 32-битной системе %ProgramFiles%
это «C: \ Program Files», а в 64-битной системе это, по- %ProgramFiles%
видимому, возвращается C:\Program Files (x86)
. Мне просто любопытно, почему то же самое не выполняется, когда я пытаюсь сделать это из командной строки Windows (или в панели обозревателя и т. Д.). Есть 64-битная командная строка или что-то?
%programfiles%
возвращаетC:\Program Files
(в конфигурации Windows по умолчанию). В 64-разрядных версиях Windows%programfiles(x86)
возвращаетсяC:\Program Files (x86)
. Не уверен, почему php возвращает что-то, противоречащее этому, но вы можете легко проверить, какие переменные среды для данной системы установлены, запустив ихset
из командной строки в Windows x64 и x86 Windows.