ModPerl::RegistryPrefork 应该能让我的旧 cgi 工作,但是
我在 CGI.pm 下开发了一个网络应用程序。我想切换到 mod_perl2。 我的 web 应用程序在 CGI 下工作,但是当我尝试更改 mod 时,它不再工作,而我没有更改 web 应用程序中的任何内容,除了在 mod_perl 下运行的 apache conf 文件。
我已经安装了 mod-perl2 并像这样配置我的 VirualHost:
Alias /project1/ /var/www/v6/cgi-bin/
PerlModule Apache::DBI
PerlModule ModPerl::RegistryPrefork
<Directory /var/www/v6/cgi-bin/ >
PerlOptions -SetupEnv
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
我的脚本看起来像 .他使用 /v6/cgi-bin/lib/
#!/usr/bin/perl
use lib qw(lib);
use strict;
use DBI;
use CGI;
use Template;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;
use Connexion;
use Search;
my $cgi = new CGI;
our $fastdb = Connexion::database('1','1');
my $get_description__id_sth = Search->get_description_id_sth();
Apache2 中的一些模块在日志中写入错误:
[2011 年 2 月 3 日星期四 17:35:13] -e:DBI 连接(':','',...)失败:访问 用户“www-data”@“localhost”被拒绝 (使用密码:NO)位于 lib/Connexion.pm 第 134 行
在浏览器中我有:
无法调用“准备”方法 lib/Search.pm 行中的未定义值 51.
所以我明白脚本无法连接到数据库。但是为什么呢? 它正在 mod_cgi 上运行。 如果有人有想法:'( 谢谢。
I developped a web app under CGI.pm.I'd like to switch to mod_perl2.
My webapp worked under CGI but when i tried to change the mod, it's not working anymore while I didn't change anything in the webapp ,except the apache conf files to run under mod_perl.
I have installed mod-perl2 and configure my VirualHost like this :
Alias /project1/ /var/www/v6/cgi-bin/
PerlModule Apache::DBI
PerlModule ModPerl::RegistryPrefork
<Directory /var/www/v6/cgi-bin/ >
PerlOptions -SetupEnv
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
My script looks like . he uses some modules in /v6/cgi-bin/lib/
#!/usr/bin/perl
use lib qw(lib);
use strict;
use DBI;
use CGI;
use Template;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;
use Connexion;
use Search;
my $cgi = new CGI;
our $fastdb = Connexion::database('1','1');
my $get_description__id_sth = Search->get_description_id_sth();
Apache2 write the error in the log :
[Thu Feb 3 17:35:13 2011] -e: DBI
connect(':','',...) failed: Access
denied for user 'www-data'@'localhost'
(using password: NO) at
lib/Connexion.pm line 134
In the browser i have :
Can't call method "prepare" on an
undefined value at lib/Search.pm line
51.
So i understand that the script can't connect to the database.But why?
It was working on mod_cgi.
If someone has an idea :'(
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Connexion 是什么?它在 DBI 连接调用中做什么?
您很可能不需要禁用SetupEnv。
What is Connexion and what is it doing in the DBI connect call?
You very likely need to not be disabling SetupEnv.
Connexion 是我为连接数据库而制作的模块。它位于 /cgi-bin/lib 中,而我之前的脚本从 /cgi-bin/ 目录调用他。
封装连接;
Connexion is a module i made for connecting my database.It's in /cgi-bin/lib whereas my previous script call him from /cgi-bin/ directory.
package Connexion;