【问题标题】:Why does my Perl CGI complain "Can't locate Mysql.pm"?为什么我的 Perl CGI 抱怨“找不到 Mysql.pm”?
【发布时间】:2011-01-31 05:57:18
【问题描述】:

我有两个文件夹 phpperl。它们分别包含index.phpindex.pl

我的 Perl 代码如下所示:

#!/usr/bin/perl
use Mysql;

print "Content-type: text/html\n\n"; 
print "<h2>PERL-mySQL Connect</h2>";
print "page info";
$host = "localhost";
$database = "cdcol";
$user = "root";
$password = "";
$db = Mysql->connect($host, $database, $user, $password);
$db->selectdb($database);

当我运行上面的代码时(通过在浏览器中输入http://localhost:88/perl/),我得到以下错误:

Can't locate Mysql.pm in @INC (@INC contains: C:/xampp/perl/site/lib/ C:/xampp/perl/lib C:/xampp/perl/site/lib C:/xampp/apache) at C:/xampp/htdocs/perl/index.pl line 2. BEGIN failed--compilation aborted at C:/xampp/htdocs/perl/index.pl line 2.

而浏览到http://localhost:88/php/ 有效。

index.php 有:

<?php
$con = mysql_connect("localhost","root","");
    if($con)
    {
        if(mysql_select_db("cdcol", $con))
        {
            $sql="SELECT Id From products";
            if(mysql_query($sql))
            {
                $result = mysql_query($sql);
                if ($result) ...

【问题讨论】:

  • 郑重声明,您没有连接问题。您只是没有在 (xampp) 路径中安装 perl Mysql 模块。
  • 正如 extraneon 所说,您需要确保为运行 Web 服务器的用户正确配置了 perl。
  • @dexter 我之前的观点是:没有必要像 1999 年那样学习编程。使用DBI。此外,您必须使用strictwarnings
  • 不要使用 15 年的 Perl 教程
  • Sinan Ünür:在 1999 年,DBi 和“use strict:”已经成为标准,所以这段代码来自更早的时代。

标签: mysql perl cgi


【解决方案1】:

您应该将DBIDBD::mysql 结合使用。

您应该使用标准 CGI 处理模块,例如 CGI::Simple

use strict; use warnings;
use CGI::Simple;
use DBI;

my $cgi = CGI::Simple->new;
my $dsn = sprintf(
    'DBI:mysql:database=%s;host=%s',
    'cdcol', 'localhost'
);

my $dbh = DBI->connect($dsn, root => '',
    { AutoCommit => 0, RaiseError => 0 }
);

my $status = $dbh ? 'Connected' : 'Failed to connect';

print $cgi->header, <<HTML;
<!DOCTYPE HTML>
<html>
<head><title>Test</title></head>
<body>
<h1>Perl CGI Script</h1>
<p>$status</p>
</body>
</html>
HTML

【讨论】:

  • 以上代码给了我以下错误:服务器遇到内部错误,无法完成您的请求。错误消息:无法在 @INC 中找到 CGI/Simple.pm(@INC 包含:C:/xampp/perl/site/lib/ C:/xampp/perl/lib C:/xampp/perl/site/lib C :/xampp/apache) 在 C:/xampp/htdocs/perl/index.pl 第 4 行。BEGIN 失败——编译在 C:/xampp/htdocs/perl/index.pl 第 4 行中止。,
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-11
相关资源
最近更新 更多