simple PHP version switching
php-version exposes a
php-version command allowing developers to switch between versions of PHP.
This IS for you if
- You are not satisifed with heavy handed *AMP or PPA-based installers.
- You use multiple versions of PHP on Linux or Mac.
- You download pre-compiled PHP binaries for Windows.
- You want to run your automated tests against multiple PHP versions.
- You are a developer that works on a variety of PHP projects each requiring different versions of PHP.
- You want to work on the latest PHP, but expect to support prior work that was done on older PHP versions.
This is NOT for you if
- You are content with heavy handed *AMP installers.
- You are provisioning a production server so you only need a single PHP install.
- You NEVER work on more than one PHP project at a time.
- You don't plan on supporting prior work that was done on other PHP versions.
php-version attempts to stick to the classic UNIX notion that tools should do one thing well.
- Homebrew installed PHP versions are picked up automatically.
- PHP versions installed into
~/.phpsare picked up automatically.
- PHP versions listed in the
$PHP_VERSIONSshell variable are picked up automatically.
- snap versioning: Use a partial version number (i.e.
php-version 5) to automatically use the latest 5.x version.
- per version
export PHPRCif a version-specific
php-version --helpfor details.
- bash and zsh actively supported; though care has been taken such that other shells may work as well (but only bash and zsh are supported).
- tiny: less than 150 LOC; a single function sourced via your shell's rc file.
- no shims, sub-shells, symlinks or
- we won't leave files and symlinks all over the place.
- does not attempt to manage Apache, MySQL, etc.
- does not attempt to compile, build, or install PHP.
- does not attempt to support OS package manager installed (i.e. ppa, etc.) PHP versions.
Switch to a specific PHP version
% php-version <version>
List installed and active (*) PHP version(s)
% php-version 5.3.9 5.3.10 5.4.0RC8 5.4.0RC6 5.4.0 * 5.4.8
homebrew (recommended for OSX users)
% brew tap homebrew/homebrew-php % brew install php-version
cURL (for non-OSX users or those that prefer not to use
% mkdir -p $HOME/local/php-version # or your place of choice % cd !$ % curl -# -L https://github.com/wilmoore/php-version/tarball/master | tar -xz --strip 1
Alternative (i.e. non-Homebrew) installation methods are documented on the wiki.
Add one of the following to
$HOME/.zshrc, or your shell's equivalent configuration file:
# Homebrew (recommended) source $(brew --prefix php-version)/php-version.sh && php-version 5 # non-Homebrew source $HOME/local/php-version/php-version.sh && php-version 5
php-version --help for more configuration options such as how to add extra PHP installation paths or
php-config --version to find out which
php version is active.
If you have PHP versions in multiple directories, you can list them in the environment variable
PHP_VERSIONSseparated by spaces as depicted below:
export PHP_VERSIONS="$HOME/local/php $HOME/php/versions"
NOTE: do this before you source
Deactivate / Uninstall
Remove setup configuration.
Enter one of the following commands listed below to remove associated files.
# Homebrew (recommended) % brew remove --force php-version # non-Homebrew % rm -rf $HOME/local/php-version
Copy the bug report output to your clipboard (
pbcopyworks on Mac OSX; use your OS equivalent)
% cd /tmp % git clone https://github.com/wilmoore/php-version.git % source php-version/bug-report.sh | pbcopy
File an issue.
99 Wil Moore III 3 Jason P. Scharf 3 Tugdual Saunier 1 Gábor Egyed 1 Martin Lundberg