upgrade_php.sh 2.1 KB

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