Come determinare il path di php.exe su Windows – cerca routes predefiniti?

Attualmente sto sviluppando un paio di plugin per Sublime Text 2 su OS X e mi piacerebbe renderli multipiattaforma, il che significa che devo scoprire se e where è installato php.exe .

In questo momento chiamo /usr/bin/php in Python, che ovviamente funziona solo su OS X e Linux:

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

Ma su Windows, sembra che non ci sia alcun path predefinito per php.exe. Più ne ho cercato su Google, maggiori sono le possibilità. Finora penso che dovrei controllare ognuno dei seguenti routes per esistenza:

 c:\php\php.exe c:\php5\php.exe c:\windows\php.exe c:\program files\php\php.exe c:\wamp\bin\php\php5\php.exe c:\xampp\php\php.exe 

Questa è già una vera raccolta, ma quello che sto chiedendo è una list completa che copre tutte le possibilità – o un altro modo per capirlo che dovrebbe essere solido come controllare each ansible path.

Quindi se hai php.exe installato in qualche posto diverso da questi, lascia un commento con il tuo path e lo aggiungerò alla list sopra.

Inoltre, sembra che ci siano php.exe e php-cli.exe . Suppongo che sarebbe ok per il ciclo attraverso each ansible path, controllare prima php-cli.exe, quindi verificare php.exe e prendere la prima corrispondenza. È corretto o esiste una pratica migliore?

Se l'utente ha definito la cartella bin di PHP sul PATH sistema, dovresti essere in grado di provare ad eseguire php -v per verificare che sia presente.

Se si desidera get il path completo dell'eseguibile di php e il sistema di destinazione è Windows 2003 o successivo (quindi Vista e 7), è ansible utilizzare il command WHERE , ovvero:

 C:\>where php.exe C:\Program Files (x86)\WAMP\bin\php\php5.3.5\php.exe 

Vedi anche ansible domanda correlata: Esiste un equivalente di "which" sulla row di command di Windows? .

Se sei davvero alla disperata ricerca di qualsiasi file sul computer dell'utente, potresti provare a eseguire l'equivoco di una find – ma sarà slooow !

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

Da PHP 5.4 e versioni successive, puoi utilizzare la costante PHP_BINARY.