Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl CGI脚本不在浏览器中运行_Perl_Cgi - Fatal编程技术网

Perl CGI脚本不在浏览器中运行

Perl CGI脚本不在浏览器中运行,perl,cgi,Perl,Cgi,我正在制作一个.cgi文件,它以表格格式打印网页上数据库表中的所有值。问题是,当我在putty终端模拟器上运行该文件时,它工作正常,但当我尝试在浏览器上运行该文件时,会收到一条错误消息“找不到文件”,即使我在服务器上键入了文件的正确位置 我不明白我做错了什么?我使用putty将文件权限设置为chmod 755*,但仍不起作用。这是文件权限问题还是在浏览器或其他浏览器上运行的表结构错误 请帮忙 people.CGI文件 #!/usr/bin/perl use CGI; use DBI; u

我正在制作一个.cgi文件,它以表格格式打印网页上数据库表中的所有值。问题是,当我在putty终端模拟器上运行该文件时,它工作正常,但当我尝试在浏览器上运行该文件时,会收到一条错误消息“找不到文件”,即使我在服务器上键入了文件的正确位置

我不明白我做错了什么?我使用putty将文件权限设置为chmod 755*,但仍不起作用。这是文件权限问题还是在浏览器或其他浏览器上运行的表结构错误

请帮忙

people.CGI文件

 #!/usr/bin/perl
 use CGI;
 use DBI;
 use strict;
 #use warnings;
 #use diagnostics;
 print "Content-type:text/html\r\n\r\n";
 #$q = CGI->new;
 #print  $q->header;
 my $dsn = "DBI:mysql:Demo:localhost";   # Data source name
 my $username = "mint";                 # User name
 my $password = "MINT123";              # Password
 my $dbh;
 my $sth;                          # Database and statement handles
 $dbh = DBI->connect($dsn, $username, $password);

 $sth = $dbh->prepare("SELECT * from people");

 $sth->execute();

 print "<h1>ganesh</h1>";
 print "<table >
 <tr>
 <th>ID</th>
 <th>Name of People Involved</th>
 <th>Position</th>
 <th>Roles(A user can have multiple roles)</th>
 <th>Notes</th>
 </tr>";
 while( my $href = $sth->fetchrow_hashref )
 {
   print "<tr>";
   print "<td>$$href{'id'}</td>";
   print "<td>$$href{'name'}</td>";
   print "<td>$$href{'pos'}</td>";
   print "<td>$$href{'role'}</td>";
   print "<td>$$href{'notes'}</td>";
   #print "<td><input type='text' value=\"$$href{'display_name'}\" id =\"dis-$$href{'windows_id'}\" readonly> </td>";
   #print "<td><input type='text' value=\"$$href{'email_id'}\" readonly> </td>";
   print "</tr>";
 }
 print "</table>";

 $sth->finish();
 $dbh->disconnect();
数据库表结构

表格数据

在putty中运行文件时输出

尝试在浏览器上运行文件时显示的消息


你以前收到的两个答案完全是胡说八道。运行CGI程序不需要使用CGI对象。当然,这样做会更容易,但这不是必须的

程序需要处理的CGI协议的唯一部分是内容类型头。你正在用你的打印线做这件事

不,你的问题完全在别的地方。但是,不幸的是,在这个地方,如果我们不知道更多的事情,我们只能提供很少的帮助。由于web服务器找不到您的代码,因此出现“找不到文件”错误。换句话说,您在浏览器128.9.45.170/~pankaj.yadav/Test/cgi/people.cgi中键入的地址与web服务器上的文件名不匹配

这一切都取决于web服务器的配置方式。web地址如何映射到文件路径?我们不知道。只有web服务器管理员才能确定答案


如果查看web服务器错误日志,您可能会得到一条线索。您将在日志中看到“未找到文件”错误,该错误可能包含web服务器试图查找的实际文件路径。这可能有助于您确定将CGI程序放在何处。

正是出于这个原因和其他许多原因,大多数人不再使用CGI.pm编写web应用程序,即使是在CGI环境下运行的应用程序。应用程序的测试和调试要容易得多,我相信Dancer也一样,一旦一切正常,如果你必须在CGI下部署,比如说Apache,那么你就知道它的服务器配置了。仅仅是我的$0.03通货膨胀Mojolicous应用程序就更容易测试和调试,我相信Dancer也是-基本上你想要在PSGI上运行的任何东西。我用notepad++制作了上面的脚本。这与脚本的EOL转换有关吗?使用putty或类似软件直接在服务器上制作cgi脚本是一种合适的做法??甚至当我试图打印像hello world这样的简单语句时,它不起作用。露西,不,它与行尾无关。您的编程未运行,因为它位于web服务器上的错误位置。我想我已经说清楚了。