Da un prompt dei comandi, ottengo quanto segue:
>echo %ProgramFiles%
C:\Program Files
Tuttavia, alcune applicazioni (PHP in questo caso, anche se ho visto lo stesso comportamento all'interno di httpd.conf di Apache), è:
>php -r "echo $_ENV['ProgramFiles'];"
C:\Program Files (x86)
Perchè è questo?
Sfondo: sto sviluppando script che sono agnostici del sistema operativo host a 32 bit o 64 bit, e per i file di configurazione funziona alla grande. Su un sistema a 32 bit, %ProgramFiles%
è "C: \ Programmi" e su un sistema a 64 bit che %ProgramFiles%
sembra restituire lo stesso C:\Program Files (x86)
. Sono solo curioso di sapere perché lo stesso non è valido quando lo provo dal prompt dei comandi di Windows (o nella barra di esplorazione, ecc.). Esiste un prompt dei comandi a 64 bit o qualcosa del genere?
%programfiles%
restituisceC:\Program Files
(su una configurazione predefinita di Windows). Nelle versioni x64 di Windows,%programfiles(x86)
ritornaC:\Program Files (x86)
. Non sei sicuro del perché php stia restituendo qualcosa di contrario, ma puoi facilmente verificare quali sono le variabili ambientali per un determinato sistema eseguendoset
da un prompt dei comandi su Windows x64 e Windows x86.