#!/usr/bin/env bash underline="\033[4m" red="\033[1;31m" green="\033[1;32m" yellow="\033[1;33m" bold="\033[1m" reset="\033[0m" homebrew_path=$(brew --prefix) editeur=/usr/local/bin/bbedit # apache v_apache=$(apachectl -v | sed -n '1p' | awk -F":" '{print $2}' | xargs) conf_apache=$(httpd -V | grep 'SERVER_CONFIG_FILE' | awk -F "\"" '{print $2}') document_root=$(grep -e '^DocumentRoot' "$conf_apache" | awk '{print $2}' | sed 's/\"//g') log_apa=$(grep -e '^ErrorLog' "$conf_apache" | awk -F "\"" '{print $2}') access_apa=$(grep -e 'CustomLog' "$conf_apache" | grep -v "#" | awk -F "\"" '{print $2}') vhost=$(grep -e 'httpd-vhosts.conf' "$conf_apache" | awk '{print $2}') ssl=$(grep -e 'httpd-ssl.conf' "$conf_apache" | awk '{print $2}') config_apache=() config_apache+=("$conf_apache") config_apache+=("$vhost") config_apache+=("$ssl") # PHP declare -a additionnal=() add_ini() { # Current php version (from httpd.conf) ip=$(grep -E SetHandler $conf_apache | grep -v \# | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}:[0-9]{4}") x=${ip: -2} current_simple_php_version="${x:0:1}.${x:1}" current_php_version="php@${x:0:1}.${x:1}" v_php=$($homebrew_path/opt/$current_php_version/bin/php -v) php_ini="$homebrew_path/etc/php/$current_simple_php_version/php.ini" conf_php=() conf_php+=("$php_ini") conf_php+=("$homebrew_path/etc/php/$current_simple_php_version/php-fpm.d/www.conf") addconf_php=$(find "$homebrew_path/etc/php/$current_simple_php_version/conf.d" -name "*.ini" | sort -n) z=0 additionnal=() for i in $addconf_php do additionnal+=("$addconf_dir$i") done conf_php+=(${additionnal[@]}) } # MySQL my=$(mysql --help | grep -A1 'Default options' | grep '.my.cnf') conf_mysql=($my) v_mysql=$(mysql -V | awk -F"," '{print $1}' | xargs) # Functions error_log(){ tail -f "$log_apa" & tailpid=$! sleep 0.25 read -p "< Press Enter to quit tail ! >" kill $tailpid } acces_log(){ tail -f "$access_apa" & tailpid=$! sleep 0.25 read -p "< Press Enter to quit tail ! >" kill $tailpid } entete(){ v_php_short=$(echo "$v_php" | sed -n '1p' ) printf "Apache: %s\n" "$v_apache" printf "PHP: %s\n" "$v_php_short" printf "MySQL: %s\n" "$v_mysql" echo "" } versions(){ echo -e "\n${underline}Apache/PHP/MySQL Version:${reset}\n" apachectl -v echo "" $homebrew_path/opt/$current_php_version/bin/php -v echo "" mysql --version echo "" read -p "< Press Enter>" } conf_files(){ echo -e "\n${underline}Apache/PHP/MySQL Configuration files:${reset}\n" echo -e "\033[4mApache:\033[0m " #&& echo $conf_apache for line in "${config_apache[@]}" do echo -e " ● $line" done echo echo -e "\033[4mPHP:\033[0m " # && echo "$conf_php" for line in "${conf_php[@]}" do echo -e " ● $line" done echo echo -e "\033[4mMySQL:\033[0m " for line in "${conf_mysql[@]}" do echo -e " ● $line" done echo read -p "< Press Enter>" } submenu(){ options2=("${additionnal[@]}" "(M)enu") echo "Edit which file ?: " select opt in "${options2[@]}"; do [[ $opt == "(M)enu" ]] || [[ $REPLY == "m" ]] || [[ $REPLY == "M" ]] && menu; [[ -z $opt ]] && echo "Wrong choice !" [[ -n $opt ]] && "$editeur" "$opt"; done } switch_php(){ php_installed_array=() for i in $(ls $homebrew_path/etc/php/); do [[ -d "$homebrew_path/etc/php/$i" ]] && php_installed_array+=("$i"); done php_installed_array+=("(M)enu" "Help") echo -e "\nCurrent PHP: $current_simple_php_version" echo "Switch to PHP: " select version in "${php_installed_array[@]}"; do [[ $version == "(M)enu" ]] || [[ $REPLY == "m" ]] || [[ $REPLY == "M" ]] && menu; [[ $version == "Help" ]] && echo "Only currently PHP installed are displayed. To switch to another PHP version, install it before (brew install php@8.3) !"; [[ -z $version ]] && [ "$version" != "Help" ] && echo "Wrong choice !" [[ -n $version ]] && [ "$version" != "Help" ] && echo "$version" | xargs -p -n 1 sphp && menu; done } # Main menu menu(){ add_ini options=( "Apache (r)estart" "(E)dit httpd.conf" "Edit httpd-v(h)osts.conf" "Edit httpd-(s)sl.conf" "error_(l)og Apache" "(a)ccess_log Apache" "Edit (P)HP.ini" "Edit additio(n)nals *.ini files" "Open PHP (i)nfo page in browser" "S(w)itch to PHP version" "Apache/PHP/MySQL (V)ersion" "Apache/PHP/MySQL (C)onfiguration files" "(Q)uit" ) # --> sphp:<-- # mod-php: https://gist.github.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/ # php-fpm: https://gist.github.com/rozsival/10289d1e2006c68009ace0478306ecd2/ # Brew PHP switcher # https://github.com/philcook/brew-php-switcher#readme echo -e "\n\033[1mApache Tools: \033[0m\n" entete select option in "${options[@]}"; do case "$REPLY" in 1|r|R) sudo apachectl -k restart ; menu ;; 2|e|E) "$editeur" "$conf_apache" ;; # httpd.conf 3|h|H) "$editeur" "$vhost" ; menu ;; # httpd-vhost.conf 4|s|S) "$editeur" "$ssl" ; menu ;; # httpd-ssl.conf 5|l|L) command -v ttab >/dev/null 2>&1 && ttab tail -f "$log_apa" || error_log ; menu ;; 6|a|A) command -v ttab >/dev/null 2>&1 && ttab tail -f "$access_apa" || acces_log ; menu ;; 7|p|P) "$editeur" "$php_ini" ; menu ;; # php.ini 8|n|N) submenu ;; 9|i|I) echo '' > $document_root/php-info.php && open 'http://localhost/php-info.php' ;; 10|w|W) switch_php; menu ;; #read -e -n 3 -p "Which PHP version? (7.4/8.0/8.1/8.2/8.3): " choice #if [[ "$choice" == "7.4" ]] || [[ "$choice" == "8.0" ]] || [[ "$choice" == "8.1" ]] || [[ "$choice" == "8.2" ]] || [[ "$choice" == "8.3" ]]; then echo "$choice" | xargs -p -n 1 sphp ; fi ; menu ;; 11|v|V) versions ; menu ;; 12|c|C) conf_files ; menu ;; 13|q|Q) exit 0 ;; esac done } menu