标签: mod-perl-registry

如何在mod_perl中添加特定于脚本的lib路径?

我正在尝试将CGI脚本迁移到mod_perl使用ModPerl::Registry.

脚本使用与脚本位于同一目录中的模块,但由于mod_perl当前目录位于其他位置,因此不起作用.

我尝试使用FindBin添加到@INC,但这是FindBin看起来像:

$FindBin::Bin: /usr/sbin
$FindBin::Script: httpd
Run Code Online (Sandbox Code Playgroud)

这完全没用.

那么,有没有办法让脚本找出它的位置,并将该目录添加到@INC?理想情况下,使用相同Apache服务器的所有其他脚本都不会将该目录添加到其中@INC.

apache perl mod-perl mod-perl-registry

3
推荐指数
1
解决办法
3193
查看次数

如何使用ModPerl :: Registry禁用旧版CGI脚本中的默认mod_perl错误页面

我在Perl中有一个CGI脚本,它自己生成HTTP错误页面.我使用以下Apache2配置通过ModPerl :: Registry在mod_perl下运行它:

Alias /perl "/var/www/perl"
<Directory "/var/www/perl">
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry
    PerlOptions +ParseHeaders
    Options Indexes FollowSymlinks +ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了一个小问题:当标题中打印的HTTP状态不同于200(例如404)时,Apache会将默认的HTML错误文档附加到我自己生成的响应中.

以下面的简单CGI脚本为例:

#!/usr/bin/perl

use strict;
use warnings;

use CGI qw(:standard :escapeHTML -nosticky);
use CGI::Carp qw(fatalsToBrowser);

use Apache2::Const qw(:http :common);

our $cgi = CGI->new();

print $cgi->header(-type=>'text/html', -charset => 'utf-8',
                   -status=> '404 Not Found');
our $mod_perl_version = $ENV{'MOD_PERL'} ? " $ENV{'MOD_PERL'}" : '';
print <<"EOF";
<html>
<head>
<title>die_error_minimal$mod_perl_version 
</head>
<body>
404 error
</body>
</html> …
Run Code Online (Sandbox Code Playgroud)

perl cgi mod-perl mod-perl2 mod-perl-registry

3
推荐指数
1
解决办法
2016
查看次数

标签 统计

mod-perl ×2

mod-perl-registry ×2

perl ×2

apache ×1

cgi ×1

mod-perl2 ×1