MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //proc/self/root/proc/self/root/scripts.20110531.215904.25158/phpopenbasectl
#!/usr/bin/perl
# cpanel - phpopenbasectl                         Copyright(c) 2010 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

BEGIN { unshift @INC, '/usr/local/cpanel'; }

use Cpanel::RcsRecord            ();
use Cpanel::Config               ();
use Cpanel::Config::LoadCpConf   ();
use Cpanel::HttpUtils::ApRestart ();
use Cpanel::PwCache              ();
use Cpanel::SafeFile             ();
use Cpanel::SafeRun::Simple      ();
use Cpanel::Logger               ();

my $logger = Cpanel::Logger->new();

my $ctl = lc shift @ARGV;
if ( $ctl !~ /^o(n|ff)$/ ) {
    die "$0: usage: $0 <on|off>";
}

exit if ( !-e "/usr/local/apache/conf/httpd.conf" );

my $cpconf = Cpanel::Config::LoadCpConf::loadcpconf();
$cpconf->{'phpopenbasedirhome'} = $ctl eq 'on' ? 1 : 0;
Cpanel::Config::savecpconf($cpconf);

Cpanel::PwCache::init_passwdless_pwcache();

my $PDS = Cpanel::Config::loadConfig( '/var/cpanel/phpopendomains', {}, '\s*[:]\s*', '^\s*[#]' );

my $userdomains = Cpanel::Config::loaduserdomains( {}, 1 );

# would put warning here, but if it doesn't exist then creating an empty one won't help
$httplock = Cpanel::SafeFile::safeopen( \*HC, "+<", "/usr/local/apache/conf/httpd.conf" );
if ( !$httplock ) {
    $logger->die("Could not edit /usr/local/apache/conf/httpd.conf");
}
while (<HC>) {
    push( @CFILE, $_ );
}
seek( HC, 0, 0 );
my $ivh     = 0;
my $iphp    = 0;
my $killphp = 0;
foreach (@CFILE) {
    $line = $_;
    if ( !( $line =~ /^\s*#/ ) ) {
        if ( $line =~ /^\s*<virtualhost/i ) {
            $bh  = 1;
            $ivh = 1;
        }
        if ( $line =~ /^\s*<ifmodule\s*mod_php\d+/i || $line =~ m/^\s*<ifmodule\s*sapi_apache2\.c/i || $line =~ /^\s*<ifmodule\s*!?concurrent_php/i ) {
            if ( !$iphp ) {
                $phpl    = '';
                $killphp = 0;
            }
            $iphp++;
        }
        if ( $iphp && $line =~ /^\s*<\/ifmodule/i ) {
            $iphp--;
            if ( !$iphp && $killphp ) {
                $phpl = '';
                next;
            }
            elsif ( !$iphp ) {
                print HC $phpl;
                $phpl = '';
            }
        }
        if ( $line =~ /^\s*<\/virtualhost/i ) {
            $ivh = 0;
        }
        if ( $ivh && $ctl eq "on" ) {
            if ( $line =~ /^\s*php\d?_admin_value\s*open_basedir /i ) {
                $bh = 0;
            }
            if ( $line =~ /^\s*ServerName\s*(\S+)/i ) {
                $sn = $1;
                $sn =~ s/^www\.//g;
                if ($bh) {
                    $owner = $userdomains->{$sn} || '';
                    if ( $owner ne "" && $owner ne "root" && $owner ne "*" && getpwnam($owner) ) {
                        my $homedir = ( Cpanel::PwCache::getpwnam($owner) )[7];
                        if ( $PDS->{$sn} ne "-1" ) {
                            print HC "    <IfModule concurrent_php.c>\n";
                            print HC "        php4_admin_value open_basedir \"${homedir}/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp\"\n";
                            print HC "        php5_admin_value open_basedir \"${homedir}/:/usr/lib/php:/usr/local/lib/php:/tmp\"\n";
                            print HC "    </IfModule>\n";
                            print HC "    <IfModule !concurrent_php.c>\n";
                            print HC "        <IfModule mod_php4.c>\n";
                            print HC "            php_admin_value open_basedir \"${homedir}/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp\"\n";
                            print HC "        </IfModule>\n";
                            print HC "        <IfModule mod_php5.c>\n";
                            print HC "            php_admin_value open_basedir \"${homedir}/:/usr/lib/php:/usr/local/lib/php:/tmp\"\n";
                            print HC "        </IfModule>\n";
                            print HC "        <IfModule sapi_apache2.c>\n";
                            print HC "            php_admin_value open_basedir \"${homedir}/:/usr/lib/php:/usr/php4/lib/php:/usr/local/lib/php:/usr/local/php4/lib/php:/tmp\"\n";
                            print HC "        </IfModule>\n";
                            print HC "    </IfModule>\n";
                        }
                    }
                }
            }
        }
        if ( $ivh && $ctl eq "off" && $iphp ) {
            if ( $line =~ /^\s*php\d?_admin_value\s*open_basedir /i ) {
                $killphp = 1;
                next;
            }
        }
    }
    if ($iphp) {
        $phpl .= $line;
    }
    else {
        print HC $line;
    }
}
truncate( HC, tell(HC) );
Cpanel::SafeFile::safeclose( \*HC, $httplock );

Cpanel::RcsRecord::rcsrecord("/usr/local/apache/conf/httpd.conf");

Cpanel::HttpUtils::ApRestart::safeaprestart();