Как определить путь к php.exe на windows - поиск путей по умолчанию?
В настоящее время я разрабатываю пару плагинов для Sublime Text 2 на OS X, и я хотел бы сделать их кросс-платформой, то есть мне нужно выяснить, установлено ли и где php.exe
.
Прямо сейчас я вызываю /usr/bin/php
в Python, который явно работает только на OS X и Linux:
phppath = '/usr/bin/php'<br>
pluginpath = sublime.packages_path() + '/HtmlTidy/tidy.php'<br>
retval = os.system( '%s "%s"' % ( phppath, scriptpath ) )
Но в Windows, по-видимому, нет определенного пути по умолчанию для php.exe. Чем больше я искал ее, тем больше возможностей. До сих пор, я думаю, мне пришлось бы проверять каждый из следующих путей существования:
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
Это уже довольно коллекция, но то, что я прошу, - это либо полный список, охватывающий все возможности, либо другой способ понять, что должно быть таким же надежным, как проверка каждого возможного пути.
Итак, если у вас есть php.exe, установленный в некотором месте, отличном от этого, оставьте комментарий своим путем, и я добавлю его в список выше.
Кроме того, кажется, что php.exe
и php-cli.exe
. Я думаю, было бы нормально перебирать каждый возможный путь, сначала проверить php-cli.exe, а затем проверить php.exe и выполнить первое совпадение. Это правильно или есть лучшая практика?
Ответы
Ответ 1
Если пользователь установил добавленную папку bin bin в систему PATH
, вы должны просто попробовать и выполнить php -v
, чтобы проверить, присутствует ли она.
Если вы хотите получить полный путь к исполняемому файлу php, а целевая система - Windows 2003 или более поздняя (например, Vista и 7), вы можете использовать команду WHERE
, то есть:
C:\>where php.exe
C:\Program Files (x86)\WAMP\bin\php\php5.3.5\php.exe
Также см. возможный связанный с этим вопрос: Есть ли эквивалент 'which' в командной строке Windows?.
Если вы действительно отчаянно пытаетесь найти какой-либо файл на компьютере пользователя, вы можете попробовать выполнить равноценность find
, но это будет slooow!
C: && cd \ && dir /s /b php.exe
Ответ 2
Из PHP 5.4 и более поздних версий вы можете использовать константу PHP_BINARY.
Ответ 3
попробовать
echo PHP_BINDIR;
Он работает, я тестировал его на MacOS, как в php 5.6