add.inc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/bash
  2. hestia_module_php_add() {
  3. source $HESTIA/bin/module/func.inc
  4. source $HESTIA/bin/module/php/func.inc
  5. if ! hestia_module_isinstalled 'php' && [ ! "$param_force" ]; then
  6. echo "PHP module is not installed. See 'hestia module info php'."
  7. return 1
  8. fi
  9. # PHP version is first parameter
  10. param_ver="$1"
  11. if [ ! "$param_ver" ]; then
  12. echo "You must specify PHP version"
  13. return 1
  14. fi
  15. if [ "$param_ver" == "default" ]; then
  16. param_ver="$PHP_DEFAULT_VERSION"
  17. fi
  18. # Verify php version format
  19. if [[ ! "$param_ver" =~ ^[0-9]\.[0-9]+ ]]; then
  20. echo "The PHP version format is invalid, it should look like [0-9].[0-9]."
  21. exit
  22. fi
  23. # Check version is supported
  24. php_version=''
  25. for ver in $PHP_SUPPORTED_VERSIONS; do
  26. if [ "$param_ver" == "$ver" ]; then
  27. php_version="$param_ver"
  28. break;
  29. fi
  30. done
  31. if [ ! "$php_version" ]; then
  32. echo "PHP version $param_ver is not supported."
  33. return 1
  34. fi
  35. local php_withoutdot=${php_version//.}
  36. local php_version_present=$(osal_kv_read_bool $HESTIA_CONF_MODULES/php.conf "php${php_withoutdot}_present" && echo 1)
  37. if [ "$php_version_present" ] && [ ! "$param_force" ]; then
  38. echo "PHP version ${php_version} is already present. See 'hestia module php list'."
  39. return 0
  40. fi
  41. # Perform verification if read-only mode is enabled
  42. check_hestia_demo_mode
  43. echo "Adding PHP version ${php_version}..."
  44. local php_prefix=$(osal_php_package_prefix $php_version)
  45. mph="$php_prefix-mbstring $php_prefix-bcmath $php_prefix-cli $php_prefix-curl
  46. $php_prefix-fpm $php_prefix-gd $php_prefix-intl $php_prefix-mysql
  47. $php_prefix-soap $php_prefix-xml $php_prefix-zip $php_prefix-mbstring
  48. $php_prefix-json $php_prefix-bz2 $php_prefix-pspell $php_prefix-imagick $php_prefix-pgsql
  49. $php_prefix-imap $php_prefix-ldap"
  50. # Check is version is 7.1 or below to add mcrypt
  51. if [[ `echo "$php_version 7.2" | awk '{print ($1 < $2)}'` == 1 ]]; then
  52. mph="$mph $php_prefix-mcrypt"
  53. fi
  54. # Install php packages
  55. osal_package_preinstall
  56. osal_execute_with_spinner osal_package_install $mph
  57. # Check if installation was sucessfully
  58. if [ ! $(osal_php_fpm_isinstalled $php_version) ]; then
  59. echo "Installation failed, please run the following command manualy for debuging:"
  60. echo "$OSAL_CMD_PACKAGE_MANAGER install ${mph//\\n/ \\}"
  61. fi
  62. # Check if required modules for apache2 are enabled
  63. if [ "$WEB_SYSTEM" = "apache2" ] || [ "$WEB_SYSTEM" = "httpd" ]; then
  64. osal_apache_module_enable 'proxy_fcgi'
  65. osal_apache_module_enable 'setenvif'
  66. fi
  67. # Configure FPM
  68. osal_service_enable $php_prefix-fpm
  69. pool_d=$(osal_php_fpm_pool_d $php_version)
  70. if [ "$pool_d" ]; then
  71. mkdir -p $pool_d
  72. hestia_safe_rm $pool_d/*
  73. cp -f $HESTIA_INSTALL_DIR/php-fpm/dummy.conf $pool_d/
  74. sed -i "s/9999/99$php_withoutdot/g" $pool_d/dummy.conf # FIXME: this'll break with PHP 10.0
  75. fi
  76. # Install backend template
  77. cp -f $HESTIA_INSTALL_DIR/php-fpm/multiphp.tpl \
  78. $HESTIA/data/templates/web/php-fpm/PHP-${php_version/\./_}.tpl
  79. osal_kv_write $HESTIA_CONF_MODULES/php.conf "php${php_withoutdot}_present" '1'
  80. #----------------------------------------------------------#
  81. # Hestia #
  82. #----------------------------------------------------------#
  83. log_history "installed php $php_version" '' 'admin'
  84. hestia module php integrate
  85. }