PHPackages                             hjbdev/pvm - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. hjbdev/pvm

ActiveLibrary[CLI &amp; Console](/categories/cli)

hjbdev/pvm
==========

PHP Version Manager for Windows CLI

0.2.4(2y ago)2914.2k↓87.5%29[3 issues](https://github.com/hjbdev/pvm/issues)[3 PRs](https://github.com/hjbdev/pvm/pulls)MITGoPHP ^5.6|^7.0|^8.0CI passing

Since Apr 28Pushed 1mo ago6 watchersCompare

[ Source](https://github.com/hjbdev/pvm)[ Packagist](https://packagist.org/packages/hjbdev/pvm)[ Docs](https://pvm.hjb.dev)[ RSS](/packages/hjbdev-pvm/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (2)Versions (10)Used By (0)

PVM for Windows
===============

[](#pvm-for-windows)

[Support this project](https://github.com/sponsors/hjbdev)

Removing the hassle of changing PHP versions in the CLI on Windows.

This package has a much more niche use case than nvm does. When developing on Windows and using the integrated terminal, it's quite difficult to get those terminals to *actually* listen to PATH changes.

This utility changes that.

Installation
------------

[](#installation)

`pvm` currently supports x64 Windows only.

```
irm https://pvm.hjb.dev/install.ps1 | iex
```

You can still install manually by downloading the latest `pvm.exe` release, placing it in `%UserProfile%\.pvm\bin` (for example `C:\Users\Harry\.pvm\bin`), and adding that folder to your PATH.

Commands
--------

[](#commands)

```
pvm list

```

Will list out all the available PHP versions you have installed

```
pvm list remote

```

Will list the PHP versions available for installation.

```
pvm bin

```

Will tell you what to put in your Path variable.

```
pvm use 8.2.9

```

Note

Versions must have major.minor specified in the *use* command. If a .patch version is omitted, newest available patch version is chosen.

Will switch your currently active PHP version to PHP 8.2.9

```
pvm install 8.2

```

Note

The install command will automatically determine the newest minor/patch versions if they are not specified

Will install PHP 8.2 at the latest patch.

```
pvm extensions list

```

Will show regular and Zend extensions for the active PHP version, including whether each extension is enabled, disabled, available in `ext`, or missing from disk.

```
pvm extensions enable curl,openssl

```

Will enable one or more extensions that already have entries in the active version's `php.ini`.

```
pvm extensions disable xdebug

```

Will disable an extension or Zend extension in the active version's `php.ini`.

Composer support
----------------

[](#composer-support)

`pvm` now installs also composer with each php version installed. It will install Composer latest stable release for PHP &gt;= 7.2 and Composer latest 2.2.x LTS for PHP &lt; 7.2. You'll be able to invoke composer from terminal as it is intended:

```
composer --version
```

Build this project
------------------

[](#build-this-project)

To compile this project use:

```
bash ./build.sh
```

To override the embedded version for a release-style local build:

```
VERSION=1.2.1 bash ./build.sh
```

GitHub releases are built automatically from pushed tags and publish both `pvm.exe` and `install.ps1` as release assets.

###  Health Score

46

—

FairBetter than 92% of packages

Maintenance59

Moderate activity, may be stable

Popularity39

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 84.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~121 days

Recently: every ~212 days

Total

8

Last Release

1040d ago

PHP version history (2 changes)0.0.1PHP ^7.1.3

0.2.0PHP ^5.6|^7.0|^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/42136c99644c6b8a8ea177aece5eb5120768caf367613394ad3d7d17a01662c6?d=identicon)[hjbdev](/maintainers/hjbdev)

---

Top Contributors

[![hjbdev](https://avatars.githubusercontent.com/u/30434619?v=4)](https://github.com/hjbdev "hjbdev (104 commits)")[![Lotti](https://avatars.githubusercontent.com/u/279962?v=4)](https://github.com/Lotti "Lotti (7 commits)")[![engeplabs](https://avatars.githubusercontent.com/u/16978481?v=4)](https://github.com/engeplabs "engeplabs (5 commits)")[![sog-vriva](https://avatars.githubusercontent.com/u/235340183?v=4)](https://github.com/sog-vriva "sog-vriva (3 commits)")[![goodjun](https://avatars.githubusercontent.com/u/18377597?v=4)](https://github.com/goodjun "goodjun (1 commits)")[![oldreposcrapyard](https://avatars.githubusercontent.com/u/7560012?v=4)](https://github.com/oldreposcrapyard "oldreposcrapyard (1 commits)")[![OliverWich](https://avatars.githubusercontent.com/u/35409274?v=4)](https://github.com/OliverWich "OliverWich (1 commits)")[![Eboubaker](https://avatars.githubusercontent.com/u/37766821?v=4)](https://github.com/Eboubaker "Eboubaker (1 commits)")

---

Tags

phpphp-versionsphpmanagerversionphpvmpvm

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/hjbdev-pvm/health.svg)

```
[![Health](https://phpackages.com/badges/hjbdev-pvm/health.svg)](https://phpackages.com/packages/hjbdev-pvm)
```

###  Alternatives

[nunomaduro/termwind

It's like Tailwind CSS, but for the console.

2.5k271.5M386](/packages/nunomaduro-termwind)[nunomaduro/laravel-console-task

Laravel Console Task is a output method for your Laravel/Laravel Zero commands.

2592.3M13](/packages/nunomaduro-laravel-console-task)[nunomaduro/patrol

An elegant command-line tool that keeps your PHP Project's dependencies in check

276132.0k3](/packages/nunomaduro-patrol)[alecrabbit/php-cli-snake

Lightweight cli spinner with zero dependencies

29216.7k5](/packages/alecrabbit-php-cli-snake)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
