Re: rewriterule, location, and perlhandler

2009-07-21 Thread Adam Prime
Eric Lease Morgan wrote:
> 
> On Jul 21, 2009, at 9:45 PM, Nick Wellnhofer wrote:
> 
>>> What am I doing wrong? Does an actual file need to exist in order for
>>> mod_perl to find it?
>>
>> No.
> 
> 
> I didn't think so, but what sort of configuration do I need to do so my
> mod_perl packages get executed without the existence of a file?
> 

You need to use Handlers.  See this link for a really simple example of
a ResponseHandler, and how to configure it.

http://perl.apache.org/docs/2.0/user/intro/start_fast.html#Handler_Modules

Adam


Re: rewriterule, location, and perlhandler

2009-07-21 Thread Eric Lease Morgan


On Jul 21, 2009, at 9:45 PM, Nick Wellnhofer wrote:


What am I doing wrong? Does an actual file need to exist in order for
mod_perl to find it?


No.



I didn't think so, but what sort of configuration do I need to do so  
my mod_perl packages get executed without the existence of a file?


--
Eric Morgan



Re: rewriterule, location, and perlhandler

2009-07-21 Thread Nick Wellnhofer
Eric Lease Morgan wrote:
> What am I doing wrong? Does an actual file need to exist in order for
> mod_perl to find it?

No.

> How should I edit httpd.conf so I can: 1) rewrite
> GET requests, and 2) execute the result in a mod_perl module?

Try the mod_rewrite "passthrough" (PT) flag:

RewriteRule ^/etexts/id/(.*) /sandbox/semantic-web.cgi?id=$1 [PT]

More info here:
http://modperlbook.org/html/12-8-mod_rewrite-Examples.html

Nick


Re: rewriterule, location, and perlhandler [resolved]

2009-07-21 Thread Eric Lease Morgan


On Jul 21, 2009, at 9:32 PM, Eric Lease Morgan wrote:

How do I get Apache's RewriteRule, Location, and PerlHander to work  
nicely together?...


I now want to implement a RewriteRule -- a la a "cool" linked data  
URL -- to redirect URLs with a specific shape to SemanticWeb.pm, and  
I use the following:


 RewriteRule ^/etexts/id/(.*) /sandbox/semantic-web.cgi?id=$1

In other words, all request starting with /etexts/id should be  
redirected (rewritten) to go to semantic-web.cgi. Unfortunately, all  
requests go directly to the touched file and not to my Perl package;  
the Location directive seems by-passed



Resolved. Alas, I needed to add [passthrough] to my RewriteRule  
configuration:


  RewriteRule ^/etexts/id/(.*) /sandbox/semantic-web.cgi?id=$1  
[passthrough]


From the mod_rewrite documentation:

  * 'passthrough|PT' (pass through to next handler)

  This flag forces the rewrite engine to set the uri field of the
  internal request_rec structure to the value of the filename
  field. This flag is just a hack to enable post-processing of the
  output of RewriteRule directives, using Alias, ScriptAlias,
  Redirect, and other directives from various URI-to-filename
  translators. For example, to rewrite /abc to /def using
  mod_rewrite, and then /def to /ghi using mod_alias:

RewriteRule ^/abc(.*) /def$1 [PT]
Alias /def /ghi

  If you omit the PT flag, mod_rewrite will rewrite uri=/abc/... to
  filename=/def/... as a full API-compliant URI-to-filename
  translator should do. Then mod_alias will try to do a
  URI-to-filename transition, which will fail. Note: You must use
  this flag if you want to mix directives from different modules
  which allow URL-to-filename translators. The typical example is
  the use of mod_alias and mod_rewrite.

  http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html


I sincerely apologize for wasting people's time and bandwidth.

--
Eric Lease Morgan




rewriterule, location, and perlhandler

2009-07-21 Thread Eric Lease Morgan


How do I get Apache's RewriteRule, Location, and PerlHander to work  
nicely together?


I have a the following Hello World mod_perl module:

  package Apache2::Alex::SemanticWeb;

  use Apache2::Const -compile => qw( OK );
  use strict;

  sub handler {

my $r = shift;
$r->content_type( 'text/html' );
$r->print( 'hello, world!' );
return Apache2::Const::OK;

  }

  1;

I then touch a file named semantic-web.cgi.

I then add a Location directive to httpd.conf:

  
SetHandler perl-script
PerlHandler Apache2::Alex::SemanticWeb
  

I then use my browser to go to the following URL, and it returns  
"hello, world!":


  http://infomotions.com/sandbox/semantic-web.cgi

Great and wonderful.

I now want to implement a RewriteRule -- a la a "cool" linked data URL  
-- to redirect URLs with a specific shape to SemanticWeb.pm, and I use  
the following:


  RewriteRule ^/etexts/id/(.*) /sandbox/semantic-web.cgi?id=$1

In other words, all request starting with /etexts/id should be  
redirected (rewritten) to go to semantic-web.cgi. Unfortunately, all  
requests go directly to the touched file and not to my Perl package;  
the Location directive seems by-passed. When I remove semantic-web.cgi  
from my file system I get a 404 error (file not found).


What am I doing wrong? Does an actual file need to exist in order for  
mod_perl to find it? How should I edit httpd.conf so I can: 1) rewrite  
GET requests, and 2) execute the result in a mod_perl module?


--
Eric Lease Morgan
Infomotions, Inc.




Linux::Smaps on RHEL

2009-07-21 Thread Jonathan Swartz
I'm running into the problem using Linux::Smaps on RHEL with an Apache  
server on port 80. Namely, that the httpd child doesn't have  
permissions to look at the smaps file.


 Linux::Smaps: Cannot open /proc/20074/smaps: Permission denied
  or
 Linux::Smaps: Cannot open /proc/self/smaps: Permission denied

I believe it is this bug:

https://bugzilla.redhat.com/show_bug.cgi?id=322881

Since the redhat folks don't seem to be in a hurry to fix this, I'm  
wondering if anyone has discovered a workaround. (Other than, "don't  
use RHEL" - beyond my control. :))


Thanks
Jon



Re: [PATCH] Apache::DBI - Disconnect on child exit

2009-07-21 Thread Jiri Pavlovsky

Nick Wellnhofer napsal(a):

Currently, Apache::DBI never disconnects from the database. This leads
to the following warnings in my Postgres logs every time an Apache child
exits:

LOG:  unexpected EOF on client connection

Depending on MaxRequestsPerChild this can really spam your Postgres logs.

Attached is a patch against Apache::DBI that adds a PerlChildExitHandler
in order to disconnect all existing database connections.

Comments are welcome.




Thanks, it made my Postgres log useful again.


mod_perl / CGI.pm and 'our' variables

2009-07-21 Thread Tomáš Bažant
Hi 

i'm new here and have a problem i have not been able to solve for 2 days
now:

i'm writing a web application using %SUBJ% and would like to set 'our
$dbh = ...' so that i do not need to pass db handler as an argument to
functions in different packages every time i need. but this 'global'
variable is not seen inside imported package as $::dbh (as it is in
normal non-mod_perl application).

Any idea?



-- 
Tomáš Bažant 
Novell, SUSE Linux s.r.o.