python - Sådan bestemmes stien til php.exe på windows - søg standard stier?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg udvikler i øjeblikket et par plugins til Sublime Text 2 på OS X, og jeg vil gerne gøre dem krydsplatform, hvilket betyder, at jeg skal finde ud af om og hvor php.exe er installeret.


Lige nu kalder jeg /usr/bin/php i Python, som naturligvis kun virker på OS X og Linux:


phppath = '/usr/bin/php'<br>
pluginpath = sublime.packages\_path() + '/HtmlTidy/tidy.php'<br>
retval = os.system( '\%s "\%s"' \% ( phppath, scriptpath ) )


Men i Windows ser der ingen definitiv standard sti til php.exe. Jo mere jeg googlede for det, jo flere muligheder viste sig. Hidtil tror jeg, at jeg skulle tjekke hver af de følgende stier til eksistens:


c:phpphp.exe
c:php5php.exe
c:windowsphp.exe
c:program filesphpphp.exe
c:wampinphpphp5php.exe
c:xamppphpphp.exe


Det er allerede en samling, men det jeg beder om er enten en komplet liste, der dækker alle muligheder - eller en anden måde at finde ud af, at det skal være så robust som kontrol af hver mulig vej.


Så hvis du har php.exe installeret på et andet sted end disse, skal du skrive en kommentar med din sti, og jeg vil tilføje den til listen ovenfor.


Desuden synes der at være php.exe og php-cli.exe. Jeg tror det ville være ok at springe igennem hver mulig sti, check først for php-cli.exe, så tjek for php.exe og tag den første kamp. Er det korrekt eller er der en bedre praksis?

Bedste reference


Hvis brugeren har defineret tilføjet PHP 's bin mappe til systemet PATH, skal du bare prøve at udføre php -v for at kontrollere, at den er til stede.


Hvis du ønsker at få den fulde sti til php eksekverbar og målsystemet er Windows 2003 eller senere (så Vista og 7) kan du bruge kommandoen WHERE, dvs.:


C:>where php.exe
C:Program Files (x86)WAMPinphpphp5.3.5php.exe


Se også evt. Relateret spørgsmål: Er der et tilsvarende 'som' på kommandolinjen i Windows?.


Hvis du virkelig er desperat til at finde nogen -fil på brugerens computer, kan du prøve at udføre en equivilent af en find - men det bliver slooow !


C: && cd  && dir /s /b php.exe

Andre referencer 1


Fra PHP 5.4 og senere kan du bruge PHP\_BINARY konstanten.

Andre referencer 2


prøve


echo PHP\_BINDIR;


Det virker, jeg testede det på MacOS som med php 5.6