发信人: zhcharles(弦下之意 -> 寻)
整理人: workingnow(2003-07-07 22:06:19), 站内信件
|
CGI 程序员排错手册
小传(zhcharles)
作为程序员,最大的工作莫过于程序的调试与排错。现小弟将自己在写 CGI 程序时的调试心得与各位分享,但水平有限,请大家多多指教!
语言部份:
现在写 CGI 最多的语言莫过于 perl,perl 以它天生对文字的处理的灵活性,得到了许多的 CGI 程序的喜爱,是现今写 CGI 使用人数最多的一种语言之一,所以首先说一说 Perl。
作为一个解释型的程序语言,程序的语法是很重要的。perl 内置了一个语法的检查开关,如下:
perl -c script
这将对 script 这个脚本程序进行语法的检查,而不会对该脚本进行解释运行。如果出现错误,perl 会指出错误的语法和错误的地方,并且会提供少许的提示。这步是 perl 程序排错的最基本之中的基本。
如果想得到更详细的错误信息,可使用以下这人开关:
perl -w script
这个 -w 开关是打开 perl 的警告开关,这个开关会提示更多的错误信息。例如出错代码的行号或使用了没有定义的变量。
当 perl 返回错误码代码的行号,而您的文件编辑器没有显示行号的功能,可以使用作者的一个小程序。该程序没有很大的功能,它只会显示文本文件内指定的行的内容。代码如下:
#!/usr/bin/perl -w
# name showline.pl
open(FH,"$ARGV[0]");
my $i = 1;
while(<FH>) {
if($i == $ARGV[1]) {
print "$_";
last;
}
$i++;
}
close(FH);
用法: ./showline.pl file num_of_line
如: ./showline.pl error.pl 35
这样就会显示 error.pl 文件里的第 35 行的内容。
如果不想在命令行输入 -w 开关,可以程序的头一行输入,如下:
#!/usr/bin/perl -w
perl 还有一个专门用于调试程序的开关 -d,不过我从来都不用,大家可以自己去找些关于这方面的资料!
--
在 UNIX 下,如果要执行一个程序,该程序必需要有执行的权限,而不像 DOS 下以 .exe 和 .com 结尾就代表程序。所以,想运行 CGI 程序的话,就必需对该程序加上执行的权限。命令如下:
chmod +x script
这样就可以让所有人都可以执行该程序了。另外要注意的是,权限这个东东不是一言两句就可以说得清楚,一定会结合实际的情况来进行分配权限,一不小心可能会让黑客有机可乘。
服务器部份:
CGI 程序是通过服务器才能与用户通信,而且,大多数的 CGI 程序出错后,都会在服务器的错误记录文件里记下错误的信息,所以懂得看服务器的错误记录文件也会对程序的调试有很大的帮助。
Pdff
这种情况是 CGI 程序还没有在向 Web 服务器输入出数据时指明输入内容的类型。如果输出的信息为纯文本格式,就要在输入前加入以下这句语句:
print "Content-type:text/paint\n\n";
如果是 html 的文件信息,就用以下这句:
print "Content-type:text/html\n\n";
不过一定要注意!在打印信息类型( text/html ) 时,后面一定要退一行空白的行,所以用了两个 \n 这是 CGI 标准规定的,否则程序会出错,而浏览器就会出现 500 服务器错误信息。
|
|