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