diff --git a/bin/v-change-selector-state b/bin/v-change-selector-state new file mode 100755 index 0000000..75e9b72 --- /dev/null +++ b/bin/v-change-selector-state @@ -0,0 +1,56 @@ +#!/bin/bash +# info: Change php selector state +# options: STATUS + +# STATUS can be yes or no +# example: v-change-selector-state yes + +status=$1 + +# Includes +# shellcheck source=/etc/hestiacp/hestia.conf +source /etc/hestiacp/hestia.conf +# shellcheck source=/usr/local/hestia/func/main.sh +source $HESTIA/func/main.sh +# load config file +source_conf "$HESTIA/conf/hestia.conf" + +#----------------------------------------------------------# +# Variables & Functions # +#----------------------------------------------------------# + +check_args '1' "$#" 'STATUS' + +if [ -f /etc/redhat-release ]; then + : +else + log_event "$OK" "$ARGUMENTS" + exit 0 +fi + +# Perform verification if read-only mode is enabled +check_hestia_demo_mode + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + + + +if [ "$status" == "yes" ]; then + update-alternatives --set php /usr/bin/hestiacp-php-selector + if [ $? -ne 0 ]; then + update-alternatives --install /usr/bin/php php /usr/bin/hestiacp-php-selector 1 + update-alternatives --set php /usr/bin/hestiacp-php-selector + fi + change_sys_value "PHP_SELECTOR" "yes" +else + /usr/local/hestia_php_selector/hestiacp_php_selector_installer off + change_sys_value "PHP_SELECTOR" "no" +fi + +#----------------------------------------------------------# +# Hestia # +#----------------------------------------------------------# + +log_event "$OK" "$ARGUMENTS" diff --git a/bin/v-change-sys-php b/bin/v-change-sys-php index 6bfb44f..62053e6 100755 --- a/bin/v-change-sys-php +++ b/bin/v-change-sys-php @@ -83,6 +83,11 @@ if [ -f '/etc/redhat-release' ]; then fi update-alternatives --set php /usr/bin/php$version +if [ $? -eq 0 ]; then + update-alternatives --install /usr/bin/php php /usr/bin/php$version 1 + update-alternatives --set php /usr/bin/php$version +fi +/usr/bin/hestiacp-php-admin system $version #----------------------------------------------------------# # Hestia # diff --git a/bin/v-change-user-php-cli b/bin/v-change-user-php-cli index 03435fe..c19f8ae 100755 --- a/bin/v-change-user-php-cli +++ b/bin/v-change-user-php-cli @@ -44,6 +44,7 @@ check_hestia_demo_mode # Reading user values source $USER_DATA/user.conf + versions=$($BIN/v-list-sys-php plain) support=0 for v in $versions; do @@ -57,27 +58,35 @@ if [ "$support" = 0 ]; then exit 2 fi -# Create .bash_aliases is not exsists -if [ ! -f "$FILE" ]; then - if [ -f /etc/redhat-release ];then - mkdir -p $HOMEDIR/$user/.bashrc.d - chown -R $user:$user $HOMEDIR/$user/.bashrc.d +if [ "$PHP_SELECTOR" == "yes" ]; then + /usr/bin/hestiacp-php-admin set $user $version + if grep -q "alias php='env php" "$FILE"; then + sed -i "/alias php='env/d" $FILE fi - touch $FILE - chown $user:$user $FILE -fi +else -if grep -q "alias php='env php$version'" "$FILE"; then - echo "PHP CLI Already defined" - exit -fi + # Create .bash_aliases is not exsists + if [ ! -f "$FILE" ]; then + if [ -f /etc/redhat-release ];then + mkdir -p $HOMEDIR/$user/.bashrc.d + chown -R $user:$user $HOMEDIR/$user/.bashrc.d + fi + touch $FILE + chown $user:$user $FILE + fi -#----------------------------------------------------------# -# Action # -#----------------------------------------------------------# + if grep -q "alias php='env php$version'" "$FILE"; then + echo "PHP CLI Already defined" + exit + fi -sed -i "/alias php='env/d" $FILE -echo "alias php='env php$version'" >> $FILE + #----------------------------------------------------------# + # Action # + #----------------------------------------------------------# + + sed -i "/alias php='env/d" $FILE + echo "alias php='env php$version'" >> $FILE +fi update_user_value "$user" '$PHPCLI' "$version" #----------------------------------------------------------# diff --git a/bin/v-list-sys-config b/bin/v-list-sys-config index 97bc512..8857a27 100755 --- a/bin/v-list-sys-config +++ b/bin/v-list-sys-config @@ -112,7 +112,8 @@ json_list() { "APP_NAME": "'$APP_NAME'", "TITLE": "'$TITLE'", "SUBJECT_EMAIL": "'$SUBJECT_EMAIL'", - "HIDE_DOCS": "'$HIDE_DOCS'" + "HIDE_DOCS": "'$HIDE_DOCS'", + "PHP_SELECTOR": "'$PHP_SELECTOR'" } }' } @@ -226,10 +227,19 @@ shell_list() { echo "Hide System Administator: $POLICY_SYSTEM_HIDE_ADMIN" echo "Updates: Notify by email: $UPGRADE_SEND_EMAIL" echo "Updates: Email install log: $UPGRADE_SEND_EMAIL_LOG" + if [ -n "$PHP_SELECTOR" ]; then + echo "PHP cli selector: $PHP_SELECTOR" + else + echo "PHP cli selector: no" + fi } # PLAIN list function plain_list() { + T_PHP_SELECTOR="no" + if [ -n "$PHP_SELECTOR" ]; then + T_PHP_SELECTOR="$PHP_SELECTOR" + fi echo -ne "$WEB_SYSTEM\t$WEB_RGROUPS\t$WEB_PORT\t$WEB_SSL\t" echo -ne "$WEB_SSL_PORT\t$WEB_BACKEND\t$PROXY_SYSTEM\t$PROXY_PORT\t" echo -ne "$PROXY_SSL_PORT\t$FTP_SYSTEM\t$MAIL_SYSTEM\t$IMAP_SYSTEM\t" @@ -239,8 +249,9 @@ plain_list() { echo -ne "$FILE_MANAGER\t$REPOSITORY\t$VERSION\t$DEMO_MODE\t$RELEASE_BRANCH\t" echo -ne "$SMTP_RELAY_HOST\t$SMTP_RELAY_PORT\t$SMTP_RELAY_USER\t" echo -ne "$UPGRADE_SEND_EMAIL\t$UPGRADE_SEND_EMAIL_LOG\t$THEME\t$LANGUAGE\t$BACKUP_GZIP\t" - echo -ne "$BACKUP\t$WEBMAIL_ALIAS\t$DB_PMA_URL\t$DB_PGA_URL\t\t$DEBUG_MODE\t$API\t$API_ALLOWED_IP" - echo -e "$POLICY_SYSTEM_PROTECTED_ADMIN\t$POLICY_SYSTEM_HIDE_ADMIN" + echo -ne "$BACKUP\t$WEBMAIL_ALIAS\t$DB_PMA_URL\t$DB_PGA_URL\t$DEBUG_MODE\t$API\t$API_ALLOWED_IP\t" + echo -ne "$POLICY_SYSTEM_PROTECTED_ADMIN\t$POLICY_SYSTEM_HIDE_ADMIN\t" + echo -e "$T_PHP_SELECTOR" } # CSV list @@ -257,7 +268,8 @@ csv_list() { echo -n "'UPGRADE_SEND_EMAIL','UPGRADE_SEND_EMAIL_LOG'," echo -n "'THEME', 'LANGUAGE','BACKUP_GZIP','BACKUP','WEBMAIL_ALIAS'," echo -n "'DB_PMA_ALIAS','DB_PGA_ALIAS','DEBUG_MODE','API','API_ALLOWED_IP'," - echo -n "'POLICY_SYSTEM_PROTECTED_ADMIN',POLICY_SYSTEM_HIDE_ADMIN'" + echo -n "'POLICY_SYSTEM_PROTECTED_ADMIN',POLICY_SYSTEM_HIDE_ADMIN'," + echo -n "'PHP_SELECTOR'" echo echo -n "'$WEB_SYSTEM','$WEB_RGROUPS','$WEB_PORT','$WEB_SSL'," echo -n "'$WEB_SSL_PORT','$WEB_BACKEND','$PROXY_SYSTEM','$PROXY_PORT'," @@ -268,8 +280,9 @@ csv_list() { echo -n "'$REPOSITORY', '$VERSION','$DEMO_MODE','$RELEASE_BRANCH'," echo -n "'$SMTP_RELAY','$SMTP_RELAY_HOST','$SMTP_RELAY_PORT','$SMTP_RELAY_USER'," echo -n "'$UPGRADE_SEND_EMAIL','$UPGRADE_SEND_EMAIL_LOG','$THEME','$LANGUAGE'," - echo -n "'$BACKUP_GZIP','$BACKUP','$WEBMAIL_ALIAS','$DB_PMA_URL','$DB_PGA_URL'" - echo -n "'$DEBUG_MODE','$API','$API_ALLOWED_IP','$POLICY_SYSTEM_PROTECTED_ADMIN,$POLICY_SYSTEM_HIDE_ADMIN" + echo -n "'$BACKUP_GZIP','$BACKUP','$WEBMAIL_ALIAS','$DB_PMA_URL','$DB_PGA_URL'," + echo -n "'$DEBUG_MODE','$API','$API_ALLOWED_IP','$POLICY_SYSTEM_PROTECTED_ADMIN,$POLICY_SYSTEM_HIDE_ADMIN'," + echo -n "'$PHP_SELECTOR'" echo } @@ -289,7 +302,7 @@ fi # Listing data case $format in json) json_list ;; - plain) shell_list ;; + plain) plain_list ;; csv) csv_list ;; shell) shell_list ;; esac diff --git a/web/edit/server/index.php b/web/edit/server/index.php index 3facf7a..9cd70d4 100644 --- a/web/edit/server/index.php +++ b/web/edit/server/index.php @@ -108,6 +108,12 @@ $v_php_versions = array_map(function ($php_version) use ($backend_templates, $ba return $phpinfo; }, $v_php_versions); +if (!empty($_SESSION["PHP_SELECTOR"])) { + $v_php_selector = $_SESSION["PHP_SELECTOR"]; +} else { + $v_php_selector = ""; +} + // List languages exec(HESTIA_CMD . "v-list-sys-languages json", $output, $return_var); $language = json_decode(implode("", $output), true); @@ -363,6 +369,23 @@ if (!empty($_POST["save"])) { //force reload $require_refresh = true; } + //Check php selector + $t_v_php_selector = $_POST["v_use_php_selector"] == "on"?"yes":"no"; + if ($_POST["v_use_php_selector"] != $v_php_selector){ + $v_set_flag = "no"; + if ($_POST["v_use_php_selector"] == "on"){ + $v_set_flag = "yes"; + } + exec( + HESTIA_CMD . + "v-change-selector-state " . + $v_set_flag, + $output, + $return_var, + ); + check_return_code($return_var, $output); + unset($output); + } } } diff --git a/web/inc/main.php b/web/inc/main.php index b19b9cf..7bf61d2 100644 --- a/web/inc/main.php +++ b/web/inc/main.php @@ -19,7 +19,14 @@ try { define("HESTIA_DIR_BIN", "/usr/local/hestia/bin/"); define("HESTIA_CMD", "/usr/bin/sudo /usr/local/hestia/bin/"); -define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo substr(phpversion(),0,3);"')); +exec(HESTIA_CMD . "v-check-rhel-utility", $output, $return_var); +$is_rhel_detect = str_contains(implode("", $output), "+"); +unset($output); +if ($is_rhel_detect) { + define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo str_replace(\'.\', \'\', substr(phpversion(),0,3));"')); +} else { + define("DEFAULT_PHP_VERSION", "php-" . exec('php -r "echo substr(phpversion(),0,3);"')); +} // Load Hestia Config directly load_hestia_config(); diff --git a/web/templates/pages/edit_server.php b/web/templates/pages/edit_server.php index 2d4886a..049abaa 100644 --- a/web/templates/pages/edit_server.php +++ b/web/templates/pages/edit_server.php @@ -293,7 +293,7 @@ -
+
@@ -310,6 +310,18 @@
+
+ + > + +