mirror of
https://github.com/webmin/webmin.git
synced 2026-03-20 16:50:24 +00:00
Work on page to show PHP versions
This commit is contained in:
@@ -61,6 +61,16 @@ else {
|
||||
print &ui_form_end();
|
||||
}
|
||||
|
||||
# Show button to install PHP versions
|
||||
if ($access{'global'} && &foreign_available("software")) {
|
||||
print &ui_hr();
|
||||
print &ui_buttons_start();
|
||||
print &ui_buttons_row("list_pkgs.cgi",
|
||||
$text{'index_pkgs'},
|
||||
$text{'index_pkgsdesc'});
|
||||
print &ui_buttons_end();
|
||||
}
|
||||
|
||||
&ui_print_footer("/", $text{'index'});
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ index_edit=Manage
|
||||
index_manual=Edit Manually
|
||||
index_anyfile=Edit other PHP configuration file
|
||||
index_return=configuration files
|
||||
index_pkgs=Manage PHP Packages
|
||||
index_pkgsdesc=Install and remove PHP versions from your system's software package repository, so that they can be configured here any used in Virtualmin.
|
||||
|
||||
file_global=Global PHP configuration
|
||||
file_eread=Failed to read $1 : $2
|
||||
@@ -214,4 +216,16 @@ acl_user=Read and write files as user
|
||||
opt_default=Default Value: <tt>$1</tt>
|
||||
opt_default_unknown=Unknown
|
||||
|
||||
pkgs_title=PHP Packages
|
||||
pkgs_name=Package name
|
||||
pkgs_ver=Package version
|
||||
pkgs_phpver=PHP version
|
||||
pkgs_users=Used by
|
||||
pkgs_delete=Delete Selected Packages
|
||||
pkgs_none=No PHP packages were found on your system!
|
||||
pkgs_ecannot=You are not allowed to manage PHP packages!
|
||||
pkgs_ecannot2=Software packages cannot be managed on this system
|
||||
pkgs_nousers=No domains
|
||||
pkgs_ucount=$1 domains
|
||||
|
||||
__norefs=1
|
||||
|
||||
50
phpini/list_pkgs.cgi
Normal file
50
phpini/list_pkgs.cgi
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show all installed PHP versions
|
||||
|
||||
require './phpini-lib.pl';
|
||||
$access{'global'} || &error($text{'pkgs_ecannot'});
|
||||
&foreign_available("software") || &error($text{'pkgs_ecannot2'});
|
||||
|
||||
&ui_print_header(undef, $text{'pkgs_title'}, "");
|
||||
|
||||
my @pkgs = &list_php_base_packages();
|
||||
if (@pkgs) {
|
||||
my %vmap;
|
||||
if (&foreign_check("virtual-server")) {
|
||||
# Get the domain to PHP version map
|
||||
&foreign_require("virtual-server");
|
||||
foreach my $d (&virtual_server::list_domains()) {
|
||||
my $v = $d->{'php_fpm_version'} ||
|
||||
$d->{'php_version'};
|
||||
if ($v) {
|
||||
$vmap{$v} ||= [ ];
|
||||
push(@{$vmap{$v}}, $d);
|
||||
}
|
||||
}
|
||||
}
|
||||
my @tds = ( "width=5" );
|
||||
print &ui_form_start("delete_pkgs.cgi", "post");
|
||||
print &ui_columns_start([ "", $text{'pkgs_name'},
|
||||
$text{'pkgs_ver'},
|
||||
$text{'pkgs_phpver'},
|
||||
$text{'pkgs_users'} ], \@tds);
|
||||
foreach my $pkg (@pkgs) {
|
||||
my $ulist = $vmap{$pkg->{'shortver'}};
|
||||
my $users = !$ulist || !@$ulist ? $text{'pkgs_nousers'} :
|
||||
@$ulist > 5 ? &text('pkgs_ucount',scalar(@$ulist)) :
|
||||
join(", ", map { "<tt>$_->{'dom'}</tt>" } @$ulist);
|
||||
print &ui_checked_columns_row([
|
||||
$pkg->{'name'},
|
||||
$pkg->{'ver'},
|
||||
$pkg->{'phpver'},
|
||||
$users,
|
||||
], \@tds, "d", $pkg->{'name'});
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_form_end([ [ undef, $text{'pkgs_delete'} ] ]);
|
||||
}
|
||||
else {
|
||||
print "<b>$text{'pkgs_none'}</b> <p>\n";
|
||||
}
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
@@ -866,5 +866,46 @@ else {
|
||||
return @poss;
|
||||
}
|
||||
|
||||
# list_php_base_packages()
|
||||
# Returns a list of hash refs, one per PHP version installed, with the following keys
|
||||
# name - Package name
|
||||
# system - Package system
|
||||
# ver - Package version
|
||||
# phpver - PHP version
|
||||
sub list_php_base_packages
|
||||
{
|
||||
&foreign_require("software");
|
||||
my $n = &software::list_packages();
|
||||
my @rv;
|
||||
for(my $i=0; $i<$n; $i++) {
|
||||
my $name = $software::packages{$i,'name'};
|
||||
next if ($name !~ /^php(\d*)$/);
|
||||
my $suffix = $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/;
|
||||
push(@rv, { 'name' => $software::packages{$i,'name'},
|
||||
'system' => $software::packages{$i,'system'},
|
||||
'ver' => $software::packages{$i,'version'},
|
||||
'shortver' => $shortver,
|
||||
'phpver' => $phpver,
|
||||
'binary' => $bin, });
|
||||
}
|
||||
return sort { &compare_version_numbers($a->{'ver'}, $b->{'ver'}) } @rv;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user