3636
3737# Auto-detect currently installed PHP-FPM version
3838OLD_PHP_VERS=()
39+ declare -A _SEEN_OLD_PHP_VERS=()
3940for ver in " ${SUPPORTED_PHP_VERSIONS[@]} " ; do
4041 if [[ " ${ver} " != " ${NEW_PHP_VER} " ]] && dpkg -l | grep -q " php${ver} -fpm" ; then
41- OLD_PHP_VERS+=(" ${ver} " )
42+ if [[ -z " ${_SEEN_OLD_PHP_VERS["${ver}"]+x} " ]]; then
43+ OLD_PHP_VERS+=(" ${ver} " )
44+ _SEEN_OLD_PHP_VERS[" ${ver} " ]=1
45+ fi
4246 fi
4347done
4448
@@ -53,19 +57,21 @@ if [[ ${#OLD_PHP_VERS[@]} -eq 0 ]]; then
5357 fi
5458fi
5559
56- # Preserve existing variable name for downstream logic that expects a single source version.
60+ # Keep backward-compatible single-version variable for legacy downstream logic.
61+ # Migration logic must use MIGRATION_SOURCE_PHP_VERS to ensure all detected old versions are handled.
5762OLD_PHP_VER=" ${OLD_PHP_VERS[0]} "
63+ MIGRATION_SOURCE_PHP_VERS=(" ${OLD_PHP_VERS[@]} " )
5864
5965echo " "
6066echo " ============================================================="
6167echo " "
62- echo " PHP Upgrade: Migrating from PHP ${OLD_PHP_VER} to PHP ${NEW_PHP_VER }"
68+ echo " PHP Upgrade: Migrating to PHP ${NEW_PHP_VER} from detected old version(s): ${MIGRATION_SOURCE_PHP_VERS[*] }"
6369echo " "
6470echo " ============================================================="
6571echo " "
6672
67- echo " Detected PHP installation(s): ${OLD_PHP_VERS [*]} "
68- echo " Proceeding with upgrade to PHP ${NEW_PHP_VER} (primary source version: ${OLD_PHP_VER} ) ..."
73+ echo " Detected PHP installation(s): ${MIGRATION_SOURCE_PHP_VERS [*]} "
74+ echo " Proceeding with upgrade to PHP ${NEW_PHP_VER} ..."
6975
7076# Stop old PHP service
7177echo " Stopping PHP ${OLD_PHP_VER} service..."
@@ -127,29 +133,34 @@ echo "Updating Nginx configuration for PHP ${NEW_PHP_VER}..."
127133
128134# Update php-fpm.conf
129135if [[ -f " /etc/nginx/globals/php-fpm.conf" ]]; then
130- sed -i " s|php${OLD_PHP_VER} -fpm|php${NEW_PHP_VER} -fpm|g" " /etc/nginx/globals/php-fpm.conf"
131- sed -i " s|php${OLD_PHP_VER} |php${NEW_PHP_VER} |g" " /etc/nginx/globals/php-fpm.conf"
136+ for _OLD_VER in " ${MIGRATION_SOURCE_PHP_VERS[@]} " ; do
137+ sed -E -i " s|php${_OLD_VER} (-fpm)?|php${NEW_PHP_VER} \1|g" " /etc/nginx/globals/php-fpm.conf"
138+ done
132139fi
133140
134141# Update all nginx site configurations
135142for config_file in /etc/nginx/sites-available/* ; do
136143 if [[ -f " $config_file " ]]; then
137- sed -i " s|php${OLD_PHP_VER} -fpm|php${NEW_PHP_VER} -fpm|g" " $config_file "
138- sed -i " s|php${OLD_PHP_VER} |php${NEW_PHP_VER} |g" " $config_file "
144+ for _OLD_VER in " ${MIGRATION_SOURCE_PHP_VERS[@]} " ; do
145+ sed -E -i " s|php${_OLD_VER} (-fpm)?|php${NEW_PHP_VER} \1|g" " $config_file "
146+ done
139147 fi
140148done
141149
142150# Update phpSysInfo configuration
143151if [[ -f " /var/www/admin/tools/phpsysinfo/phpsysinfo.ini" ]]; then
144152 echo " Updating phpSysInfo configuration..."
145- sed -i " s|php${OLD_PHP_VER} |php${NEW_PHP_VER} |g" " /var/www/admin/tools/phpsysinfo/phpsysinfo.ini"
153+ for _OLD_VER in " ${MIGRATION_SOURCE_PHP_VERS[@]} " ; do
154+ sed -E -i " s|php${_OLD_VER} (-fpm)?|php${NEW_PHP_VER} \1|g" " /var/www/admin/tools/phpsysinfo/phpsysinfo.ini"
155+ done
146156fi
147157
148158# Update admin control panel API configuration
149159if [[ -f " /var/www/admin/control-panel/api.php" ]]; then
150160 echo " Updating admin control panel API configuration..."
151- sed -i " s|php${OLD_PHP_VER} -fpm|php${NEW_PHP_VER} -fpm|g" " /var/www/admin/control-panel/api.php"
152- sed -i " s|php${OLD_PHP_VER} |php${NEW_PHP_VER} |g" " /var/www/admin/control-panel/api.php"
161+ for _OLD_VER in " ${MIGRATION_SOURCE_PHP_VERS[@]} " ; do
162+ sed -E -i " s|php${_OLD_VER} (-fpm)?|php${NEW_PHP_VER} \1|g" " /var/www/admin/control-panel/api.php"
163+ done
153164fi
154165
155166# Start new PHP service
@@ -177,28 +188,32 @@ else
177188 exit 1
178189fi
179190
180- # Remove old PHP version
181- echo " Removing PHP ${OLD_PHP_VER} installation..."
191+ # Remove old PHP version(s)
192+ echo " Removing old PHP installation(s) ..."
182193
183- # Stop and disable old PHP service
184- systemctl stop " php${OLD_PHP_VER} -fpm" 2> /dev/null || true
185- systemctl disable " php${OLD_PHP_VER} -fpm" 2> /dev/null || true
194+ for OLD_VER in " ${OLD_PHP_VERS[@]} " ; do
195+ echo " Removing PHP ${OLD_VER} installation..."
186196
187- # Remove old PHP packages
188- apt purge -y php${OLD_PHP_VER} * 2> /dev/null || true
197+ # Stop and disable old PHP service
198+ systemctl stop " php${OLD_VER} -fpm" 2> /dev/null || true
199+ systemctl disable " php${OLD_VER} -fpm" 2> /dev/null || true
189200
190- # Remove old PHP configuration directory
191- rm -rf " /etc/ php/ ${OLD_PHP_VER} " 2> /dev/null || true
201+ # Remove old PHP packages
202+ apt purge -y php${OLD_VER} * 2> /dev/null || true
192203
193- # Remove old PHP logrotate configuration
194- rm -f " /etc/logrotate.d/ php${OLD_PHP_VER} -fpm " 2> /dev/null || true
204+ # Remove old PHP configuration directory
205+ rm -rf " /etc/php/ ${OLD_VER} " 2> /dev/null || true
195206
196- # Archive old log
197- if [[ -f " /var/log/php/php${OLD_PHP_VER} -fpm.log" ]]; then
198- mv " /var/log/php/php${OLD_PHP_VER} -fpm.log" " /var/log/php/php${OLD_PHP_VER} -fpm.log.old" 2> /dev/null || true
199- fi
207+ # Remove old PHP logrotate configuration
208+ rm -f " /etc/logrotate.d/php${OLD_VER} -fpm" 2> /dev/null || true
200209
201- echo " PHP ${OLD_PHP_VER} has been removed."
210+ # Archive old log
211+ if [[ -f " /var/log/php/php${OLD_VER} -fpm.log" ]]; then
212+ mv " /var/log/php/php${OLD_VER} -fpm.log" " /var/log/php/php${OLD_VER} -fpm.log.old" 2> /dev/null || true
213+ fi
214+
215+ echo " PHP ${OLD_VER} has been removed."
216+ done
202217
203218# Cleanup
204219/usr/local/bin/enginescript/scripts/functions/php-clean.sh 2>> /tmp/enginescript_install_errors.log
0 commit comments