À partir d'une invite de commande, j'obtiens ce qui suit:
>echo %ProgramFiles%
C:\Program Files
Cependant, certaines applications (PHP dans ce cas, bien que j'aie vu le même comportement depuis httpd.conf d'Apache), c'est:
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
Pourquoi est-ce?
Contexte: Je suis en train de développer des scripts qui sont indépendants du système d'exploitation hôte 32 bits ou 64 bits, et pour les fichiers de configuration, cela fonctionne très bien. Sur un système 32 bits, se %ProgramFiles%
trouve "C: \ Program Files", et sur un système 64 bits, ce même résultat %ProgramFiles%
semble être le même C:\Program Files (x86)
. Je suis simplement curieux de savoir pourquoi il n'en va pas de même lorsque je l'essaie à partir de l'invite de commande Windows (ou dans la barre d'explorateur, etc.). Y a-t-il une invite de commande 64 bits ou quelque chose?
%programfiles%
renvoieC:\Program Files
(sur une configuration par défaut de Windows). Sur les versions x64 de Windows,%programfiles(x86)
renvoieC:\Program Files (x86)
. Vous ne savez pas pourquoi php renvoie quelque chose de contraire à cela, mais vous pouvez facilement vérifier ce que les variables d'environnement pour un système donné sont définies en exécutant àset
partir d'une invite de commande sur Windows x64 et Windows x86.