Skip to content

pphatdev/php-version-switcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

39 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Phat - XAMPP PHP Version Switcher

A simple yet powerful CLI tool to manage multiple PHP versions in XAMPP on Windows.

Release

Features

  • πŸ”„ Switch between PHP versions instantly
  • πŸ“¦ Download and install new PHP versions automatically
  • �️ Uninstall PHP versions safely
  • οΏ½πŸ“‹ List all installed PHP versions (local)
  • 🌐 Fetch available stable PHP versions from PHP.net (global)
  • ⚑ Automatic Apache configuration updates
  • πŸ›‘οΈ Safe backups before switching

Setup

Option 1: Install from MSI (Recommended)

Download the latest MSI installer from Releases and run it. The installer will automatically add phat to your PATH.

Option 2: Manual Installation

  1. Clone or download from GitHub:

    git clone https://github.com/pphatdev/php-version-switcher.git
  2. Add the folder to your system PATH:

    Settings β†’ System β†’ About β†’ Advanced system settings β†’ Environment Variables β†’ Path β†’ New

    Add the full path to where you cloned/extracted the files.

  3. Open a new terminal and run:

    phat help

Note: Phat is designed for Windows Command Prompt or PowerShell. If using Git Bash or other bash terminals, see the Git Bash compatibility guide.

Commands

Show version

phat -v
# or
phat --version

Displays the current Phat version.

List installed versions

phat list
# or explicitly list local versions
phat list --php --local

Output example:

  Installed PHP versions:
  * 7.4.33 (active, php7)
    8.0.30 (8.0.30)
    8.2.27 (8.2.27)

List available PHP versions globally

phat list --php --global

This fetches the latest stable PHP versions available from windows.php.net (Thread-Safe x64 builds).

Output example:

  Fetching available PHP versions from windows.php.net...

  Available stable PHP versions (Thread-Safe x64):

  PHP 8.3:
    8.3.15
    8.3.14
    8.3.13

  PHP 8.2:
    8.2.27
    8.2.26

  PHP 8.1:
    8.1.31
    8.1.30

  To install a version: phat install <version>

Show current version

phat current

Displays the currently active PHP version in XAMPP.

Switch PHP version

phat switch 8.0.30
# or use the alias
phat use 8.0.30

This will:

  1. Stop Apache
  2. Backup current php/ β†’ php{version}/ (e.g., php7.4.33/)
  3. Rename php{target}/ β†’ php/
  4. Update Apache config (httpd-xampp.conf)
  5. Start Apache

Download & install a new PHP version

phat install 8.3.6

Downloads the thread-safe x64 build from windows.php.net and extracts it to C:\xampp\php8.3.6\.

After installing, switch to it:

phat switch 8.3.6

Uninstall a PHP version

phat uninstall 8.0.30

Removes an installed PHP version from your system. This will:

  1. Verify the version exists and is not currently active
  2. Ask for confirmation before deletion
  3. Permanently remove the PHP version directory

Note: You cannot uninstall the currently active PHP version. Switch to a different version first.

Help

phat help

Shows all available commands with examples.

How It Works

Component Description
Directories PHP versions are stored as C:\xampp\php{version}\. The active one is always C:\xampp\php\.
Apache config httpd-xampp.conf is updated to load the correct php7apache2_4.dll or php8apache2_4.dll.
Module name PHP 7.x uses php7_module, PHP 8.x uses php_module (XAMPP convention).
Backup A backup of httpd-xampp.conf.bak is created on first switch.
Services Apache is automatically stopped before switching and restarted after configuration updates.

Requirements

  • Windows 10/11 - Required for PowerShell support
  • XAMPP - Installed at C:\xampp (default location)
  • PowerShell 5.1+ - Pre-installed on Windows 10/11
  • .NET SDK 6.0+ - Only needed for building the MSI installer

Building the MSI Installer

If you want to build the installer from source:

  1. Install the .NET SDK 6.0+

  2. Build the MSI:

    dotnet build ./installer/Phat.wixproj -c Release
  3. The MSI will be created in installer\bin\Release\

To specify a custom version:

dotnet build ./installer/Phat.wixproj -c Release -p:ProductVersion=1.0.0

Troubleshooting

πŸ“– For detailed troubleshooting solutions, see TROUBLESHOOTING.md

PowerShell Execution Policy Error

If you see "cannot be loaded. The file is not digitally signed" error:

  1. Open PowerShell as Administrator
  2. Run: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  3. Run: Unblock-File "C:\Program Files (x86)\Phat\phat.ps1"

➑️ Full solution guide

Permission Errors

Run your terminal as Administrator if you encounter permission errors when switching PHP versions.

➑️ Full solution guide

Apache Won't Start

  1. Check Apache error logs at C:\xampp\apache\logs\error.log
  2. Ensure the correct PHP DLL files exist in the PHP directory
  3. Verify httpd-xampp.conf has the correct PHP module configuration

➑️ Full solution guide

VHost Warnings

Apache virtual host warnings (e.g., Could not resolve host name) are unrelated to PHP switching β€” they come from your virtual host configuration in httpd-vhosts.conf.

Contributing

Contributions are welcome! Feel free to:

  • Report bugs and issues
  • Suggest new features
  • Submit pull requests

Support

If you find this tool helpful, please consider:

  • ⭐ Starring the repository
  • πŸ› Reporting bugs
  • πŸ“ Improving documentation

License

MIT Β© pphatdev


Made with ❀️ by pphatdev

About

My CLI tool to manage multiple PHP versions in XAMPP on Windows.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors