Apache2-API
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
}
}
if( $apxs )
{
print( STDERR "apxs found and set to $apxs\n" ) if( $MY_DEBUG );
$ref->{apxs} = $apxs;
}
else
{
die( "You have not provided the arguement -apxs and the apxs binary could not be found. Maybe you need to install apache2-dev?\n" );
}
}
if( !$ref->{httpd_conf} )
{
DEFAULT_APACHE_CONF_CHECK:
{
eval
{
require File::Spec;
require IO::File;
};
print( STDERR "Error trying to load File::Spec and IO::File: $@\n" ) if( $@ && $MY_DEBUG );
last DEFAULT_APACHE_CONF_CHECK if( $@ );
my $base;
# http://httpd.apache.org/docs/2.0/platform/windows.xml
my @possible_bases = ();
if( $^O eq 'linux' || $^O eq 'darwin' )
{
push( @possible_bases, File::Spec->catfile( File::Spec->rootdir, qw( usr local apache2 ) ) );
push( @possible_bases, File::Spec->catfile( File::Spec->rootdir, qw( etc apache2 ) ) );
}
elsif( $^O eq 'win32' )
{
# C:\Program Files\Apache Group\Apache2
push( @possible_bases, File::Spec->catfile( File::Spec->rootdir, 'Program Files', 'Apache Group', 'Apache2' ) );
}
foreach my $path ( @possible_bases )
{
if( -e( $path ) && -d( $path ) && -x( $path ) )
{
$base = $path;
last;
}
}
print( STDERR "Existing Apache base installation path found: '$base'\n" ) if( $MY_DEBUG );
last DEFAULT_APACHE_CONF_CHECK if( !length( $base ) );
my $f = File::Spec->catfile( $base, 'apache2.conf' );
my $old = File::Spec->catfile( $base, 'httpd.conf' );
my $env = File::Spec->catfile( $base, 'envvars' );
if( -e( $f ) && -r( $f ) )
{
print( STDERR "Found an Apache configuration at '$f'\n" ) if( $MY_DEBUG );
if( -e( $env ) && -r( $env ) && ( $^O eq 'darwin' || $^O eq 'linux' ) )
{
print( STDERR "Found an Apache environment variables setup at '$env'\n" ) if( $MY_DEBUG );
my $fh;
# Credits: <https://stackoverflow.com/a/3836009/4814971>
if( defined( $fh = IO::File->new( "sh -x $env 2>&1 1>/dev/null|" ) ) )
{
my $vars = {};
while( defined( $_ = $fh->getline ) )
{
chomp;
if( /^[[:blank:]\h]*\+[[:blank:]\h]+(?:export[[:blank:]\h]+)?(\w+)\=(.*?)$/ )
{
next unless( substr( $1, 0, 7 ) eq 'APACHE_' );
$vars->{ $1 } = $ref->{ "_$1" } = $2;
}
}
$fh->close;
printf( STDERR "%d Apache environment variables found: %s\n", scalar( keys( %$vars ) ), join( ', ', sort( keys( %$vars ) ) ) );
my $tmpdir = File::Spec->tmpdir();
my $new = File::Spec->catfile( $tmpdir, 'httpd_for_cookies.conf' );
if( scalar( keys( %$vars ) ) &&
-w( $tmpdir ) &&
defined( $fh = IO::File->new( "<$f" ) ) )
{
my $conf = do{ local $/; $/ = undef; <$fh> };
my $regex = join( '|', keys( %$vars ) );
$conf =~ s
{
\$\{?($regex)\}?
}
{
$vars->{ $1 };
}xgems;
# $conf =~ s,(Include|IncludeOptional)[[:blank:]\h]+(.*?),$1 $base/$2,gs;
unless( $conf =~ /^ServerRoot[[:blank:]\h](.*?)/m )
{
$conf = qq{ServerRoot "$base"} . "\n" . $conf;
}
my $out;
# egrep -Ev '#' /etc/apache2/apache2.conf|egrep -Ev '^[[:blank:]]*$'
if( defined( $fh = IO::File->new( ">$new" ) ) )
{
print( $fh $conf );
close( $fh );
}
if( -s( $new ) > 0 )
{
$ref->{httpd_conf} = $new;
push( @scripts, $new );
print( STDERR "All went well; using \"$new\" as the temporary Apache configuration file\n" ) if( $MY_DEBUG );
}
else
{
print( STDERR "Resulting temporary Apache configuration file \"$new\" seems empty. Falling back to \"$f\"\n" ) if( $MY_DEBUG );
$ref->{httpd_conf} = $f;
}
}
else
{
print( STDERR "Could not read Apache configuration file \"$f\", or there was no environment variables found, or the temporary directory \"$tmpdir\" is not writable.\n" ) if( $MY_DEBUG );
$ref->{httpd_conf} = $f;
}
}
else
( run in 1.305 second using v1.01-cache-2.11-cpan-39bf76dae61 )