Windows 8: .phar files, how do you want to open
You have to set php.exe as your default application for phar files.
.phar
stands for PHP Archive
Usually .phar
s take some arguments, so they are intended to be run from command prompt. Linux/BSD/OS X shell or Windows command prompt.
Linux .phar
use case scenarios assume .phar
s are copied to some /bin and renamed to be without .phar extension, so you can use a php archive as if you would use any other linux command. So I recommend following way of doing the same thing with Windows:
- Put all your
.phar
files to one directory likeC:\php\phars
- Add
C:\php\phars
to system environment variables (right-click myComputer -> Properties -> Advanced System Settings -> Environment variables
) - Start the elevated command prompt (find command prompt in start menu then right-click and select
Run as Administrator
) - Type the following commands, replacing the path
C:\phpdev\php\php542\php.exe
with full path to your PHP executable:
ftype PHARFile=C:\phpdev\php\php542\php.exe "%1" %*
assoc .phar=PHARFile
set PATHEXT=%PATHEXT%;.PHAR
Next time your should be able just to run Windows console (keyboard Win+R and type cmd.exe
) and type any of your .phar
's like apigen.phar
followed by any command and it will work
C:\Users\acosonic>apigen.phar help
Usage:
...
Arguments:
command The command to execute
command_name The command name (default: "help")
Options:
--xml To output help as XML
--format To output help in other formats (default: "txt")
--raw To output raw command help
--help (-h) Display this help message.
--quiet (-q) Do not output any message.
--version (-V) Display this application version.
Help:
The help command displays help for a given command:
php C:\phpdev\phars\apigen.phar help list
You can also output the help in other formats by using the --format option:
php C:\phpdev\phars\apigen.phar help --format=xml list
To display the list of available commands, please use the list command.
C:\Users\acosonic>
So this way lets you run .phar
archives in a directory where you need to work, for example generating documentation in C:\myproject\controller
without specifying full path to .phar
as if you would if it's run without adding it to Windows path.
To explain what commands in step 4 did:
- Created mapping HKCR.phar → HKCR\PHARFile
- Created HKCR\PHARFile\shell\open\command = 'php.exe "%1" %*' [REG_EXPAND_SZ]
- Extended HKCU\Environment\PATHEXT = '%PATHEXT%;.PHAR' [REG_EXPAND_SZ]
*.phar
gets treated like binary/script, and *.phar
execution works as long as a *.phar
file is located anywhere in %PATH%
.
One can wrap php
*.phar
with *.bat
, then the filename will be the name of the CLI command:
@ECHO OFF
php "C:/Program Files/PHAR/phpDocumentor.phar" %*
One can also use such a wrap to pass along default arguments; eg. wp.bat
:
@ECHO OFF
php "C:/Program Files/PHAR/wp-cli.phar" --path="D:/SDK/wordpress" %*
Where pattern %*
will capture and forward CLI arguments, as it is supposed to.
Alike this one can run phar
alike any other CLI command, in a terminal window.