diff --git a/lib/system-detect.sh b/lib/system-detect.sh index ea798b1..b7fa211 100755 --- a/lib/system-detect.sh +++ b/lib/system-detect.sh @@ -220,21 +220,33 @@ detect_php_versions() { [ -n "$default_version" ] && SYS_PHP_VERSIONS+=("$default_version") fi - # Check EA-PHP versions (cPanel) + # Check EA-PHP versions (cPanel) - fast path parsing if [ "$SYS_CONTROL_PANEL" = "cpanel" ]; then - for php_bin in /opt/cpanel/ea-php*/root/usr/bin/php; do - if [ -x "$php_bin" ]; then - local version=$($php_bin -v 2>/dev/null | grep -oP '^PHP \K[\d.]+' | head -1) - [ -n "$version" ] && SYS_PHP_VERSIONS+=("$version") + for php_path in /opt/cpanel/ea-php*/root/usr/bin/php; do + if [ -x "$php_path" ]; then + # Extract version from path (ea-php82 -> 8.2) + local ver=$(echo "$php_path" | grep -oP 'ea-php\K\d+') + if [ -n "$ver" ]; then + # Convert 82 -> 8.2, 81 -> 8.1, etc + local major="${ver:0:1}" + local minor="${ver:1}" + # Get patch version from php -v only if needed (slower but accurate) + local full_version=$($php_path -v 2>/dev/null | grep -oP '^PHP \K[\d.]+' | head -1) + [ -n "$full_version" ] && SYS_PHP_VERSIONS+=("$full_version") + fi fi done fi - # Check alt-php versions (CloudLinux) - for php_bin in /opt/alt/php*/usr/bin/php; do - if [ -x "$php_bin" ]; then - local version=$($php_bin -v 2>/dev/null | grep -oP '^PHP \K[\d.]+' | head -1) - [ -n "$version" ] && SYS_PHP_VERSIONS+=("$version") + # Check alt-php versions (CloudLinux) - fast path parsing + for php_path in /opt/alt/php*/usr/bin/php; do + if [ -x "$php_path" ]; then + # Extract version from path (php74 -> 7.4) + local ver=$(echo "$php_path" | grep -oP 'php\K\d+') + if [ -n "$ver" ]; then + local full_version=$($php_path -v 2>/dev/null | grep -oP '^PHP \K[\d.]+' | head -1) + [ -n "$full_version" ] && SYS_PHP_VERSIONS+=("$full_version") + fi fi done