You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Desilets, Alain" <Al...@nrc-cnrc.gc.ca> on 2012/01/16 22:36:04 UTC

Perl sections in Apache conf files

I am trying to use <Perl> sections in my Apache conf files, in order to automate management of my various installations on various servers.

Looking at this page:

http://perl.apache.org/docs/2.0/api/Apache2/PerlSections.html#Configuration_Variables

I gather that any directive that can be written in an Apache conf file, can also be written as a perl statement in a <Perl> section of the Apache conf file.

As I understand it, you do this by pushing the directives arguments to an array whose name is the same as the directive.

For example, if I want to write a Perl statement which does the equivalent of this:

---
SetEnv HELLO_WORLD "Salutation earthlings"
---

I would write this:

---
<Perl>
   push @SetEnv, "HELLO_WORLD", "Salutation earthlings";
</Perl>
---

Is that correct?

I have tried this, but it does not seem to work. The reason I say this is that if I run a script that prints the environment:

--- print_env.cgi:
print "Content-type: text/plain\r\n\r\n";

print "Environment variables are:\n";
foreach my $a_key ( keys %ENV ) {
    print "$a_key:\t$ENV{$a_key}\n";
}
--- end of print_env.cgi

I do see a HELLO_WORLD variable,  but it's empty. I also see a Salutation variable (also empty), which I guess is what Apache did with the first word the value which I intended for HELLO_WORLD. There is no "earthlings" variable.

What am I doing wrong?

RE: Perl sections in Apache conf files

Posted by "Desilets, Alain" <Al...@nrc-cnrc.gc.ca>.
OK, figured out how to make the SetEnv bit work. Just set $ENV directly in the <Perl> section. Seems a bit inconsistent that you can't push on @SetEnv as you would for other directives, but oh, well.

So now, I am trying to figure out how to do the equivalent of this in a Perl section:

---
<Directory "C:/Users/Desiletsa/Documents/eclipse_workspace/WeBiText/htdocs">
  Order Deny,Allow
  Allow from all
</Directory>
---

Here is what I tried;

---
<Perl>
	$Directory{"C:/Users/Desiletsa/Documents/eclipse_workspace/WeBiText/htdocs"} =
		{
			Order => 'Deny,Allow',
			Allow => 'from,all'
		};
</Perl>
---

But Apache does not start. What am I doing wrong here?

________________________________________
From: Desilets, Alain [Alain.Desilets@nrc-cnrc.gc.ca]
Sent: Monday, January 16, 2012 4:36 PM
To: modperl@perl.apache.org
Subject: Perl sections in Apache conf files

I am trying to use <Perl> sections in my Apache conf files, in order to automate management of my various installations on various servers.

Looking at this page:

http://perl.apache.org/docs/2.0/api/Apache2/PerlSections.html#Configuration_Variables

I gather that any directive that can be written in an Apache conf file, can also be written as a perl statement in a <Perl> section of the Apache conf file.

As I understand it, you do this by pushing the directives arguments to an array whose name is the same as the directive.

For example, if I want to write a Perl statement which does the equivalent of this:

---
SetEnv HELLO_WORLD "Salutation earthlings"
---

I would write this:

---
<Perl>
   push @SetEnv, "HELLO_WORLD", "Salutation earthlings";
</Perl>
---

Is that correct?

I have tried this, but it does not seem to work. The reason I say this is that if I run a script that prints the environment:

--- print_env.cgi:
print "Content-type: text/plain\r\n\r\n";

print "Environment variables are:\n";
foreach my $a_key ( keys %ENV ) {
    print "$a_key:\t$ENV{$a_key}\n";
}
--- end of print_env.cgi

I do see a HELLO_WORLD variable,  but it's empty. I also see a Salutation variable (also empty), which I guess is what Apache did with the first word the value which I intended for HELLO_WORLD. There is no "earthlings" variable.

What am I doing wrong?