install php versions you want from homebrew
brew install [email protected] [email protected] [email protected]
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"
}
# 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