Skip to content

Instantly share code, notes, and snippets.

@rra3b
Last active March 8, 2022 10:51
Show Gist options
  • Save rra3b/b2244fd4fde58c0135ff6161ccb28a74 to your computer and use it in GitHub Desktop.
Save rra3b/b2244fd4fde58c0135ff6161ccb28a74 to your computer and use it in GitHub Desktop.
Change php version by directory for mac (HomeBrew).

Prerequisites

Install php

install php versions you want from homebrew

brew install php@7.2 php@7.4 php@8.1

Setup direnv

Setup "use_php" function

script will write to "${XDG_CONFIG_HOME:-$HOME}/.config/direnv/lib/use_php.sh" for instance usually at "~/.config/direnv/lib/use_php.sh" please check it first, this CAN NOT BE UNDONE

following command for checking if the install path is empty

echo "${XDG_CONFIG_HOME:-$HOME}/.config/direnv/lib/use_php.sh"

Setup, just paste it to terminal

LIB_DIR="${XDG_CONFIG_HOME:-$HOME}/.config/direnv/lib"
INSTALL_PATH="${LIB_DIR}/use_php.sh"
mkdir -p "$LIB_DIR"
echo '# load homebrew php' >"${LIB_DIR}/use_php.sh"
echo 'use_php(){' >>"${LIB_DIR}/use_php.sh"
echo '	local php_version="$1"' >>"${LIB_DIR}/use_php.sh"
echo '	local php_prefix="$(brew --prefix php@${php_version})"' >>"${LIB_DIR}/use_php.sh"
echo '	PATH_add "$php_prefix/bin" "$php_prefix/sbin"' >>"${LIB_DIR}/use_php.sh"
echo '}' >>"${LIB_DIR}/use_php.sh"
echo '' >>"${LIB_DIR}/use_php.sh"
echo "use_php function installed to $INSTALL_PATH"

after setup, things will looks like

$ cat "${XDG_CONFIG_HOME:-$HOME}/.config/direnv/lib/use_php.sh"
# load homebrew php
use_php(){
	local php_version="$1"
	local php_prefix="$(brew --prefix php@${php_version})"
	PATH_add "$php_prefix/bin" "$php_prefix/sbin"
}

Usage

# add use_php to .envrc of your project
cd path/to/project/root
echo "use_php 8.1" >> .envrc && direnv allow

# check php version
php --version
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment