HEX
Server: Apache
System: Linux 26.184.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64
User: hyderabadrubberp (1048)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //scripts/show_php_settings
#!/usr/local/cpanel/3rdparty/bin/perl

#                                      Copyright 2026 WebPros International, LLC
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited.

package scripts::show_php_settings;

use cPstrict;
use Getopt::Long;

use Cpanel::Config::userdata ();
use Cpanel::PHP::Config      ();
use Cpanel::PHP::Vhosts      ();
use Cpanel::ProgLang         ();

sub usage ( $err_msg = undef ) {

    if ( defined $err_msg ) {
        say "Error: $err_msg\n";
    }

    print <<"END_MESSAGE";
Usage: $0 [--help|-h]
Show the PHP settings for all users and domains.

See also /usr/local/cpanel/scripts/mass_change_php_setting

    mass_change_php_setting allows you to change all users with a specific PHP version to another version.

END_MESSAGE
    exit 1;
}

sub script () {

    say "Showing PHP settings for all users and domains.";

    my $php                = Cpanel::ProgLang->new( 'type' => 'php' );
    my $system_php_version = $php->get_system_default_package();

    say "System default PHP version: $system_php_version";

    my @users    = Cpanel::Config::userdata::load_user_list();
    my $versions = Cpanel::PHP::Vhosts::get_php_vhost_versions_from_php_config( Cpanel::PHP::Config::get_php_config_for_users( \@users ) );

    printf( "%-15s %-30s %-10s %-5s %s\n", "User", "Vhost", "Current", "FPM", "System Default?" );

    my @lines;
    foreach my $domain (@$versions) {
        my $user        = $domain->{account};
        my $vhost       = $domain->{vhost};
        my $current_ver = $domain->{version};
        my $php_fpm     = $domain->{php_fpm};

        my $is_default = 0;
        $is_default = 1 if ( exists( $domain->{phpversion_source}->{system_default} ) );

        push( @lines, sprintf( "%-15s %-30s %-10s %-5s %s\n", $user, $vhost, $current_ver, $php_fpm, ( $is_default ? '(system default)' : '' ) ) );
    }

    print sort @lines;

    return 0;
}

# Modulino behavior
unless (caller) {
    my $help;

    my $ok = GetOptions(
        'help|h' => \$help,
    );

    if ( !$ok ) {
        exit usage("Invalid option.\n");
    }

    if ($help) {
        exit usage();
    }

    exit script();
}

1;

__END__

=head1 NAME

scripts::show_php_settings - Display PHP settings for all users and domains

=head1 SYNOPSIS

    /usr/local/cpanel/scripts/show_php_settings [--help|-h]

=head1 DESCRIPTION

This script displays the PHP settings for all users and domains on the server.
It shows the current PHP version, PHP-FPM status, and whether each domain is
using the system default PHP version.

The output includes:

=over 4

=item * User - The cPanel account username

=item * Vhost - The domain name

=item * Current - The PHP version currently assigned to the domain

=item * FPM - Whether PHP-FPM is enabled (1) or disabled (0)

=item * System Default? - Indicates if the domain inherits the system default PHP version

=back

=head1 OPTIONS

=over 4

=item B<--help>, B<-h>

Display usage information and exit.

=back

=head1 EXIT STATUS

Returns 0 on success, 1 on error or when displaying help.

=head1 EXAMPLE OUTPUT

    Showing PHP settings for all users and domains.
    System default PHP version: ea-php83
    User            Vhost                          Current    FPM   System Default?
    alice           alice.example.com              ea-php82   1
    bob             bob.example.com                ea-php83   0     (system default)
    charlie         charlie.example.com            ea-php84   1

=head1 SEE ALSO

L<scripts::mass_change_php_setting> - Change PHP versions for multiple domains

=cut