php-version exposes a php-version
command allowing developers to switch between versions of PHP.
- 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.
- 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.
While there are smart alternative tools that attempt to solve this problem, none of the tools I've found were simple enough for me.
- Homebrew installed PHP versions are picked up automatically.
- PHP versions installed into
~/.phps
are picked up automatically. - PHP versions listed in the
$PHP_VERSIONS
shell 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
php.ini
: weexport PHPRC
if a version-specificphp.ini
exists. - configurable:
php-version --help
for 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
cd
hooks. - 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.
% php-version <version>
% 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 homebrew
):
% 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/.bashrc
,$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
Type 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_VERSIONS
separated by spaces as depicted below:
export PHP_VERSIONS="$HOME/local/php $HOME/php/versions"
NOTE: do this before you source php-version.sh
:
-
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 (
pbcopy
works 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
MIT