upgrade_php.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. #----------------------------------------------------------#
  3. # Variable&Function #
  4. #----------------------------------------------------------#
  5. phpnewversion=7.4
  6. phpoldversion=7.3
  7. #----------------------------------------------------------#
  8. # Verifications #
  9. #----------------------------------------------------------#
  10. if [ ! -x "$(command -v php)" ]; then
  11. echo "PHP is not installed. Aborting."
  12. exit 1
  13. fi
  14. #----------------------------------------------------------#
  15. # Action #
  16. #----------------------------------------------------------#
  17. echo "PHP current version : $phpoldversion"
  18. echo "PHP target version : $phpnewversion"
  19. echo "Do you want to upgrade PHP now? [Y|N]"
  20. read upgradeconfirmation
  21. if [ "$upgradeconfirmation" = "Y" ] || [ "$upgradeconfirmation" = "y" ]; then
  22. echo "Process: Upgrading PHP to $phpnewversion"
  23. echo ""
  24. cd /tmp
  25. dpkg-query --showformat='${Package}\t\n' --show | grep php$phpoldversion > /tmp/phpoldpackages.txt
  26. cp -a /tmp/phpoldpackages.txt /tmp/phpnewpackages.txt
  27. sed -i "s|$phpoldversion|$phpnewversion|g" /tmp/phpnewpackages.txt
  28. apt-get update > /dev/null 2>&1
  29. apt-get install $(cat /tmp/phpnewpackages.txt)
  30. update-rc.d php$phpnewversion-fpm defaults
  31. mv /etc/php/$phpoldversion/cli/php.ini /etc/php/$phpnewversion/cli/php.ini
  32. mv /etc/php/$phpoldversion/fpm/php.ini /etc/php/$phpnewversion/fpm/php.ini
  33. sed -i "s|$phpoldversion|$phpnewversion|g" /etc/php/$phpoldversion/fpm/php-fpm.conf
  34. mv /etc/php/$phpoldversion/fpm/php-fpm.conf /etc/php/$phpnewversion/fpm/php-fpm.conf
  35. rm -rf /etc/php/$phpnewversion/fpm/pool.d
  36. mkdir -p /etc/php/$phpnewversion/fpm/pool.d
  37. mv /etc/php/$phpoldversion/fpm/pool.d/* /etc/php/$phpnewversion/fpm/pool.d
  38. mv /etc/logrotate.d/php$phpoldversion-fpm /etc/logrotate.d/php$phpnewversion-fpm
  39. sed -i "s|$phpoldversion|$phpnewversion|g" /etc/logrotate.d/php$phpnewversion-fpm
  40. rm -rf /etc/logrotate.d/php$phpnewversion-fpm.dpkg-dist
  41. systemctl stop php$phpoldversion-php
  42. apt-get purge $(cat /tmp/phpoldpackages.txt)
  43. apt-get -y purge php-imagick
  44. apt-get -y install php$phpnewversion-imagick
  45. systemctl restart php$phpnewversion-fpm
  46. rm -rf /etc/php/$phpoldversion
  47. rm -rf /var/lib/php/modules/$phpoldversion
  48. rm -rf /tmp/phpoldpackages.txt
  49. rm -rf /tmp/phpnewpackages.txt
  50. if [ -d /var/cache/nginx/micro ]; then
  51. rm -rf /var/cache/nginx/micro/*
  52. fi
  53. systemctl reload nginx
  54. echo ""
  55. echo "PHP has been upgraded succcesfully to version $phpnewversion"
  56. else
  57. echo "Process: Aborted"
  58. exit 0
  59. fi