v-delete-web-php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/bin/bash
  2. # info: delete php fpm version
  3. # options: VERSION
  4. #
  5. # The function checks and delete a fpm php version if not used by any domain.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. version=$1
  11. # Includes
  12. source $HESTIA/func/main.sh
  13. source $HESTIA/conf/hestia.conf
  14. #----------------------------------------------------------#
  15. # Verifications #
  16. #----------------------------------------------------------#
  17. check_args '1' "$#" 'VERSION'
  18. # Set file locations
  19. php_fpm="/etc/init.d/php$version-fpm"
  20. # Verify php version format
  21. if [[ ! $version =~ ^[0-9]\.[0-9]+ ]]; then
  22. echo "The PHP version format is invalid, it should look like [0-9].[0-9]."
  23. echo "Example: 7.0, 7.4"
  24. exit
  25. fi
  26. # Remove backend template
  27. [ -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl ] && rm -f $HESTIA/data/templates/web/php-fpm/PHP-${version/\./_}.tpl
  28. # Check if php version exists
  29. if [ ! -f "$php_fpm" ] && [ ! -f "$HESTIA/data/templates/$WEB_SYSTEM/PHP-$version.sh" ]; then
  30. echo "ERROR: Specified PHP version is not installed."
  31. exit
  32. fi
  33. # Perform verification if read-only mode is enabled
  34. check_hestia_demo_mode
  35. #----------------------------------------------------------#
  36. # Action #
  37. #----------------------------------------------------------#
  38. mph="php$version-mbstring php$version-bcmath php$version-cli php$version-curl
  39. php$version-fpm php$version-gd php$version-intl php$version-mysql
  40. php$version-soap php$version-xml php$version-zip php$version-mbstring
  41. php$version-json php$version-bz2 php$version-pspell"
  42. # Check is version is 7.1 or below to add mcrypt
  43. if [[ `echo "$version 7.2" | awk '{print ($1 < $2)}'` == 1 ]]; then
  44. mph="$mph php$version-mcrypt"
  45. fi
  46. # Purge php packages
  47. apt-get -y purge $mph > /dev/null 2>&1 &
  48. BACK_PID=$!
  49. # Check if package removal is done, print a spinner
  50. echo "Removing PHP-$version, please wait..."
  51. spinner="/-\|"
  52. spin_i=1
  53. while kill -0 $BACK_PID > /dev/null 2>&1 ; do
  54. printf "\b${spinner:spin_i++%${#spinner}:1}"
  55. sleep 0.5
  56. done
  57. # Do a blank echo to get the \n back
  58. echo
  59. # Check if installation was sucessfully
  60. if [ -f "$php_fpm" ]; then
  61. echo "ERROR: Uninstallation failed, please run the following command manually for debugging:"
  62. echo "apt-get purge $mph"
  63. fi
  64. # Cleanup php folder
  65. [[ -d /etc/php/$version ]] && rm -rf "/etc/php/$version"
  66. #----------------------------------------------------------#
  67. # Hestia #
  68. #----------------------------------------------------------#
  69. # Logging
  70. log_history "removed php $version" '' 'admin'
  71. log_event "$OK" "$ARGUMENTS"
  72. exit