File: //proc/self/root/usr/share/webmin/virtual-server/list-php-ini.pl
#!/usr/bin/perl
=head1 list-php-ini.pl
Show PHP variables for some or all domains.
This command can be used to list the value of a PHP configuration variable
(set in the php.ini file) for one or many virtual servers at once. The
servers to update can be selected with the C<--domain> or C<--user> flags,
or you can choose to modify them all with the C<--all-domains> option.
If your system supports multiple PHP versions, you can limit the changes
to the config for a specific version with the C<--php-version> flag followed
by a number, like 7.4 or 8.2.
The variables to show are set with the C<--ini-name> flag, which can be
given multiple times to list more than one variable.
=cut
package virtual_server;
if (!$module_name) {
$main::no_acl_check++;
$ENV{'WEBMIN_CONFIG'} ||= "/etc/webmin";
$ENV{'WEBMIN_VAR'} ||= "/var/webmin";
if ($0 =~ /^(.*)\/[^\/]+$/) {
chdir($pwd = $1);
}
else {
chop($pwd = `pwd`);
}
$0 = "$pwd/list-php-ini.pl";
require './virtual-server-lib.pl';
$< == 0 || die "list-php-ini.pl must be run as root";
}
&foreign_require("phpini");
@OLDARGV = @ARGV;
&set_all_text_print();
# Parse command-line args
&parse_common_cli_flags(\@ARGV);
while(@ARGV > 0) {
local $a = shift(@ARGV);
if ($a eq "--domain") {
push(@domains, shift(@ARGV));
}
elsif ($a eq "--user") {
push(@users, shift(@ARGV));
}
elsif ($a eq "--all-domains") {
$all_doms = 1;
}
elsif ($a eq "--ini-name") {
push(@ini_names, shift(@ARGV));
}
elsif ($a eq "--php-version") {
$php_ver = shift(@ARGV);
}
else {
&usage("Unknown parameter $a");
}
}
# Validate parameters
@domains || @users || $all_doms || usage("No domains to modify specified");
@ini_names || &usage("The --ini-name parameter must be given at least once");
# Get the domains
if (@domains || @users) {
@doms = &get_domains_by_names_users(\@domains, \@users, \&usage);
}
else {
@doms = &list_domains();
}
# Get from domain
foreach my $d (@doms) {
# Check if this domain even makes sense
next if (!&domain_has_website($d) || $d->{'alias'});
$mode = &get_domain_php_mode($d);
next if ($mode eq "mod_php" || $mode eq "none");
# Get the ini files
@inis = sort { $b->[0] <=> $a->[0] } &list_domain_php_inis($d);
if ($php_ver) {
($ini) = grep { $_->[0] == $php_ver } @inis;
}
else {
$ini = $inis[0];
}
next if (!$ini);
# Get the values
$conf = &phpini::get_config($ini->[1]);
if ($nameonly) {
foreach $n (@ini_names) {
$v = &phpini::find_value($n, $conf);
print $v,"\n";
}
}
else {
print $d->{'dom'},"\n";
foreach $n (@ini_names) {
$v = &phpini::find_value($n, $conf);
print " ${n}: $v\n";
}
}
}
sub usage
{
print "$_[0]\n\n" if ($_[0]);
print "Shows PHP variables for some or all domains.\n";
print "\n";
print "virtualmin list-php-ini --domain name | --user name | --all-domains\n";
print " [--php-version number]\n";
print " <--ini-name name>+ <--ini-value value>+\n";
print " [--name-only]\n";
exit(1);
}