我正在运行html中的onclick事件的cgi脚本。
<button onclick="self.location='http:**link**/test.cgi?myfield=PRD7-QF_P7';">Click me</button>
use DBI;
use CGI::Carp qw(carpout fatalsToBrowser);
BEGIN
{
$ENV{'ORACLE_HOME'}='/data/softs/oracle/10.2.0.3/';
$ENV{'LD_LIBRARY_PATH'}='/data/softs/oracle/10.2.0.3/lib';
}
my $cgi = CGI->new;
#my $parameter = $cgi->param("myfield");
print "Content-type: text/html\n\n";
my $version = "2.1";
my $cgi = CGI->new;
my $parameter = $cgi->param("myfield");
print "Content-type: text/html\n\n";
print "This is a test perl script\n\n";
print "Parameter=${parameter}\n";
my $connection_details = DBstringToConnection($parameter);
my $AMDORA_TNS_FM = @$connection_details[0];
my $AMDORA_USER_FM = @$connection_details[1];
my $AMDORA_PASSWORD_FM = @$connection_details[2];
my $AMDORA_SCHEMA_FM = @$connection_details[3];
my $AMDORA_SERVICE_FM = @$connection_details[4];
my $dbhfm = DBI->connect("dbi:Oracle:$AMDORA_TNS_FM", $AMDORA_USER_FM,$AMDORA_PASSWORD_FM)
or die DBI->errstr;
我在文件的开头设置了Oracle_home和ld_library_path。 当我从unix终端运行cgi脚本时,它工作正常。但是当我从浏览器HTML文件运行脚本时,它会给出这个错误:
install_driver(Oracle) failed: Can't locate DBD/Oracle.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at (eval 9) line 3.
Perhaps the DBD::Oracle perl module hasn't been fully installed,
or perhaps the capitalisation of 'Oracle' isn't right.
Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge, mysql.
at /remote/users/sasahu/public_html/dashboard/test.cgi line 47
我认为DBI-&gt; connect将使用DBD :: Oracle软件包进行Oracle连接,这在unix终端中运行良好,但在浏览器中它会出现上述错误。
有人可以说如何解决问题。 在此先感谢。
答案 0 :(得分:2)
看起来你必须为运行apache webserver的用户设置环境变量ORACLE_HOME。并在apache中提供它。