From 72673cd72bf3a7f125b71c80437ef5a7993c71e8 Mon Sep 17 00:00:00 2001 From: Ilia Ross Date: Sun, 25 May 2025 21:08:47 +0300 Subject: [PATCH] Fix to factor out code to get PHP version, minor version and binary --- phpini/phpini-lib.pl | 47 ++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/phpini/phpini-lib.pl b/phpini/phpini-lib.pl index 78697f652..5e3aa9f6e 100755 --- a/phpini/phpini-lib.pl +++ b/phpini/phpini-lib.pl @@ -302,6 +302,32 @@ return -d $file1 ? $file1 : -d $file3 ? $file3 : undef; } +# get_php_info(name, version) +# Returns PHP version and short version, and the binary path +sub get_php_info +{ +my ($name, $version) = @_; +$version =~ s/\-.*$//; +my $bin; +foreach my $b ($name, $name."-cgi", $name."-fpm", "php-".$version) { + if ($bin = &has_command($b)) { + last; + } + } +if ($bin) { + my $out = &backquote_command("$bin -v 2>&1"); + if ($out =~ /(^|\n)PHP\s+([\d\.]+)/) { + $version = $2; + } + } +my $shortver = $version; +$shortver =~ s/^(\d+\.\d+).*$/$1/; +if ($shortver =~ /^5\./) { + $shortver = "5"; + } +return ($version, $shortver, $bin); +} + # get_php_ini_binary(file) # Given a php.ini path, try to guess the PHP command for it # Examples: @@ -883,25 +909,8 @@ for(my $i=0; $i<$n; $i++) { my $name = $software::packages{$i,'name'}; next unless ($name =~ /^((?:rh-)?(php(?:\d[\d.]*)??)(?:-php)?-common|php\d*[\d.]*)$/); $name = $2 || $1; - my $phpver = $software::packages{$i,'version'}; - $phpver =~ s/\-.*$//; - my $bin; - foreach my $b ($name, $name."-cgi", "php-".$phpver) { - if ($bin = &has_command($b)) { - last; - } - } - if ($bin) { - my $out = &backquote_command("$bin -v 2>&1"); - if ($out =~ /(^|\n)PHP\s+([\d\.]+)/) { - $phpver = $2; - } - } - my $shortver = $phpver; - $shortver =~ s/^(\d+\.\d+).*$/$1/; - if ($shortver =~ /^5\./) { - $shortver = "5"; - } + my ($phpver, $shortver, $bin) = + &get_php_info($name, $software::packages{$i,'version'}); push(@rv, { 'name' => $software::packages{$i,'name'}, 'system' => $software::packages{$i,'system'}, 'ver' => $software::packages{$i,'version'},