Как найти php exe

I’m currently developing a couple of plugins for Sublime Text 2 on OS X and I would like to make them cross platform, meaning I have to find out if and where php.exe is installed.

Right now I call /usr/bin/php in Python, which obviously works only on OS X and Linux:

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

But on Windows, there seems to be no definitive default path for php.exe. The more I googled for it, the more possibilities showed up. So far I think I would have to check each of the following paths for existence:

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

That’s already quite a collection, but what I’m asking for is either a complete list covering all possibilities – or another way to figure it out that should be as robust as checking each possible path.

So if you have php.exe installed in some place other than these, please leave a comment with your path and I will add it to the list above.

Besides, there seems to be php.exe and php-cli.exe. I guess it would be OK to loop through each possible path. Check first for php-cli.exe, check for php.exe, and take the first match. Is that correct or is there a better practice?

Этот раздел содержит примечания и подсказки, относящиеся к запуску PHP из
командной строки для Windows.

Замечание:

Сначала следует прочитать шаги
ручной установки!

Запуск PHP из командной строки можно выполнить без внесения каких-либо
изменений в Windows.

C:phpphp.exe -f "C:PHP Scriptsscript.php" -- -arg1 -arg2 -arg3

Но есть несколько шагов, которые помогут упростить этот процесс.
Некоторые из этих шагов уже должны были быть предприняты, но они повторяются
здесь, чтобы иметь возможность предоставить полную пошаговую последовательность.

    Замечание:

    И PATH, и PATHEXT являются важными переменными,
    изначально существовавшими в Windows, и следует позаботиться о том, чтобы
    не перезаписывать ни одну из переменных, а только добавлять к ним.

  • Добавьте расположение исполняемого файла PHP (php.exe,
    php-win.exe или php-cli.exe в
    зависимости от вашей версии PHP и предпочтений отображения) в переменную
    окружения PATH. Подробнее о том, как добавить каталог PHP в
    PATH, читайте в
    соответствующей записи часто
    задаваемых вопросов.

  • Добавьте расширение .PHP к переменной окружения
    PATHEXT. Это можно сделать одновременно с изменением
    переменной окружения PATH. Выполните те же действия, что и в
    ЧАВО, но измените
    переменную окружения PATHEXT, а не PATH.

    Замечание:

    Позиция, в которую вы помещаете .PHP, будет определять,
    какой скрипт или программа будет выполняться при совпадении имён файлов.
    Например, размещение .PHP перед .BAT
    приведёт к запуску вашего скрипта, а не пакетного файла, если существует
    пакетный файл с тем же именем.

  • Свяжите расширение .PHP с типом файла. Это делается с
    помощью следующей команды:

  • Свяжите тип файла phpfile с соответствующим исполняемым
    файлом PHP. Это делается с помощью следующей команды:

    ftype phpfile="C:phpphp.exe" -f "%1" -- %~2
    

Выполнение этих шагов позволит запускать скрипты PHP из любого каталога без
необходимости вводить исполняемый файл PHP или расширение
.PHP, и все параметры будут переданы скрипту для обработки.

В приведённом ниже примере описаны подробности о некоторых изменениях в реестре,
которые можно сделать вручную.

Пример #1 Изменения в реестре

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREClasses.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINESOFTWAREClassesphpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINESOFTWAREClassesphpfileDefaultIcon]
@="C:\php\php-win.exe,0"

[HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshell]
@="Open"

[HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshellOpen]
@="&Open"

[HKEY_LOCAL_MACHINESOFTWAREClassesphpfileshellOpencommand]
@=""C:\php\php.exe" -f "%1" -- %~2"

С этими изменениями эту же команду можно записать как:

"C:PHP Scriptsscript" -arg1 -arg2 -arg3

или, если ваш путь "C:PHP Scripts" находится в переменной
окружения PATH:

Замечание:

Есть небольшая проблема, если вы собираетесь использовать эту технику и
использовать свои скрипты PHP в качестве фильтра командной строки, как в
примере ниже:

dir | "C:PHP Scriptsscript" -arg1 -arg2 -arg3

или

dir | script -arg1 -arg2 -arg3

Вы можете обнаружить, что сценарий просто зависает и ничего не выводится.
Чтобы это заработало, необходимо внести ещё одно изменение в реестр.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionpoliciesExplorer]
"InheritConsoleHandles"=dword:00000001

Дополнительную информацию по этой проблеме можно найти в этой » 
статье базы знаний Microsoft : 321788.
В Windows 10 этот параметр изменён на противоположный, и стандартная
установка Windows 10 поддерживает унаследованные дескрипторы консоли. Это » 
сообщение на форуме Microsoft предоставляет объяснение.

vechenjivot at gmail dot com

7 years ago


On Windows 10, the above registry entries didn't work for me. In order for them to work, you need to write to
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerFileExts.phpUserChoice
for which you don't have access, even if you run regedit as admin (probably because of the Hash key).
The solution is actually much easier - right-click a PHP file in Explorer and associate it to always open with php.exe.
And then you need to modify the PATH variable:
setx PATH "%PATH%;c:pathtophp" /M
if you want to execute files with commands like
php file.php

elhadjouattara at gmail dot thrcom

8 years ago


On Windows 8, with php 5.6.8 win32 VC11 in command line, need to indicate path with / rather than backslash
Hence C:UserstoshibaDocumentsphptest.php shall be C:/Users/toshiba/Documents/php/test.php

pimroes at gmail dot com

12 years ago


Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.

rudigerw at hotmail dot com

7 years ago


On Windows 10 starting php by only typing the script name in an elevated command prompt pops up a dialog to choose an app.
It turns out Windows does that when the program associated with phpfiles through ftype cannot be executed. In this case this happens because it is trying to run php.exe in non-admin mode, even when launched from an elevated command prompt. To fix this, locate your php.exe, right-click, "Properties",  "Compatibility", under Settings check "Run this program as an administrator; then also click "Change settings for all users".

I need to find php.exe file on any given machine (windows). The problem is that I don’t know where to find the php.exe file because the path may change a bit. I’m trying to find the php.exe file that comes with wamp.

The problem is that wamp changes the file path based on the php version. For example, on one version the path will be: c:/wamp/bin/php5.5.2/php/php.exe and on another it will be c:/wamp/bin/php5.4.1/php/php.exe

I need a way to find the path to that php.exe file so I can use it and run php files:
c:/wamp/bin/php5.5.2/php/php.exe -f "path/to/my/php/file.php"

I tried doing someting like:

cd c:/wamp
dir /S /P php.exe

and I get as a result the folder of the file along with more details such as the file size and more. However, I have no clue how I can take only the desired information, the location, and use it in another batch command that will do what I want with it.

example of output (searching within c:/xampp [don’t have wamp on this machine yet.]):

Volume in drive C has no label. Volume Serial Number is 1SD-23F

Directory of c:xamppphp

07/24/2014 12:24 AM 65,536 php.exe
1 File(s) 65,536 bytes

 Total Files Listed:
           1 File(s)         65,536 bytes
           0 Dir(s)  354,231,255,040 bytes free

As you can see it tells me that th path is c:xamppphp now all I have to do is to somehow take it, append php.exe -f "path/to/my/file.php" and done.

В настоящее время я разрабатываю пару плагинов для 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:phpphp.exe
c:php5php.exe
c:windowsphp.exe
c:program filesphpphp.exe
c:wampbinphpphp5php.exe
c:xamppphpphp.exe

Это уже довольно коллекция, но то, что я прошу, – это либо полный список, охватывающий все возможности, либо другой способ понять, что должно быть таким же надежным, как проверка каждого возможного пути.

Итак, если у вас есть php.exe, установленный в некотором месте, отличном от этого, оставьте комментарий своим путем, и я добавлю его в список выше.

Кроме того, кажется, что php.exe и php-cli.exe. Я думаю, было бы нормально перебирать каждый возможный путь, сначала проверить php-cli.exe, а затем проверить php.exe и выполнить первое совпадение. Это правильно или есть лучшая практика?

В настоящее время я разрабатываю несколько плагинов для 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:phpphp.exe
c:php5php.exe
c:windowsphp.exe
c:program filesphpphp.exe
c:wampbinphpphp5php.exe
c:xamppphpphp.exe

Это уже большая коллекция, но я прошу либо полный список, охватывающий все возможности – , либо еще один способ выяснить это, который должен быть таким же надежным, как проверка каждый возможный путь.

Так что, если у вас установлен php.exe в другом месте, оставьте комментарий с вашим путем, и я добавлю его в список выше.

Кроме того, похоже, есть php.exe и php-cli.exe. Я предполагаю, что было бы нормально циклически проходить по каждому возможному пути, сначала проверять php-cli.exe, затем проверять php.exe и принимать первое совпадение. Это правильно или есть лучшая практика?

4 ответа

Лучший ответ

Если пользователь определил добавленную папку bin для PHP в систему PATH, тогда вы должны просто попытаться выполнить php -v и проверить, присутствует ли она.

Если вы хотите получить полный путь к исполняемому файлу php, а целевой системой является Windows 2003 или более поздняя (например, Vista и 7), вы можете использовать команду WHERE, т.е.

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

Также см., Возможно, связанный вопрос: Есть ли эквивалент «который» на Командная строка Windows?.

Если вы действительно хотите найти любой файл на компьютере пользователя, вы можете попробовать выполнить эквивалент find, но это будет slooow !

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


34

Community
23 Май 2017 в 11:46

C:xamppphpphp.exe 

Должно работать, если ваш xampp находится на D: или E: , вы соответственно измените с C:


0

joash
27 Ноя 2018 в 13:21

Пытаться

echo PHP_BINDIR;

Это работает, я проверял это на MacOS как с php 5.6


-1

Yevgeniy Afanasyev
21 Фев 2018 в 01:26

Начиная с PHP 5.4 и выше, вы можете использовать константу PHP_BINARY.


5

Pierre
1 Апр 2012 в 21:24

Добавить комментарий