linux下perl的调用?急!(100分)

  • 主题发起人 主题发起人 kchsun
  • 开始时间 开始时间
K

kchsun

Unregistered / Unconfirmed
GUEST, unregistred user!
linux下调用perl写的cgi有什么要求,是不是cgi的目录有要求。我在nt下
调好的cgi,在linux下说连接不允许。why
 
据你所说的现象分析
是不是你的WWW服务器没设好
能不能把问题写具体点
 
呵呵, 当然不行了:-)
1. 有些操作是专门对windows的.
2. perl程序的执行路径:
#!C:/Perl/bin/perl.exe
改成:
#!/usr/local/bin/perl
3. 路径名使用方法不一样:
如:./xxxxx.xxx要改成./xxxxx.xxx才行
:-)
 
我的调用语句如下:
../cgi-bin/help.pl
to cytown:
我的linux的perl在:
#!/usr/bin/perl
跟你说的不太一样,有什么区别吗?
 
>>#!/usr/bin/perl
是指你的perl安装的路径,每个人的机器不一定一样.
 
能不能举个小例子,cgi页里应该写什么,我写的如下:
html页:
<form method=post action=../cgi-bin/help.pl>
cgi页:
#!/usr/bin/perl
 
CGI文件要chmod成可执行的.
BTW:你写的CGI代码好像把这个问题搞坏了,无法提交注释.
 
</form>
可以了:-)
 
html页:
&amp;lt;form method="post" action="../cgi-bin/help.pl">
cgi页:
#!/usr/bin/perl
这里/usr/bin/要换成你的机器上perl所在目录.
 
cytown: 你很狡猾呀. :-)
 
哈哈,这个我知道,我最近就在搞这玩意!
cgi不能正常运行有几种情况:
1)未设好路径,不过linux下地路径一般是 /usr/bin/perl,这没上么问题
2)web服务器未设只好,linux用地是apache,要把/etc/httpd/conf/srm.conf中
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
AddHandler cgi-script .cgi两句注释去掉。
3)呵呵,可能是你运行失败的最大原因!是否出现 500 server error?
要是如此,哈哈,你肯定在上传cgi程序时没有用acsii方式,或者是在nt下写
的cgi程序中的回车换行没有转换成unix格式,如果程序中有/015这个字符,肯定
无法在unix中执行。
解决方法,在nt下用ultraedit32打开cgi程序,用file->conversions->dos to unix
选项转换并存盘,在用ftp 的 ASCII方式,一定要用ASCII方式上传至cgi-bin,应该就没问题了。
我当初也是头痛的很,好不容易才搞定了!
祝你成功!
 
to jet:/usr/bin/perl的前面要不要加#!,请速回,谢了。
 
呵呵,在linux下的perl程序,第一行必须加 #!/usr/bin/perl
^^
BTW:
其实#在unix中表示注释,shell程序的第一行也要加#!/bin/sh
这样,系统会通过#!找到解释器的路径.
 
to jet:还是不成,我怎么知道我的cgi页里有没有/015?我写的时候是没写过的。
另外,程序的扩展名应该是pl还是cgi。
>>2)web服务器未设只好,linux用地是apache,要把/etc/httpd/conf/srm.conf
>>中
>> ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
>> AddHandler cgi-script .cgi两句注释去掉
你的意思是把这两句注释上#,还是把#去掉。万分感谢!!
 
呵呵!
1。dos/win中的回车一般指回车换行,即0A0D,而在unix中的回车只是0A,后面
的0D要去掉! /015 就是8进制的15,也就是十进制的13,也就是十六进制的0D!
知道了吧!用我说的ultraedit转换,相信我,没错的!
2。cgi的扩展名可以是pl或cgi,甚至可以是任意的.
3。是把#去掉!
刚闲逛搞到一篇文章,贴给你!
PERL CGI 常见问题
本文作者:Elvis Tam 主页:中文CGI精品斋 转载请保持完整性

一、CGI 简介

??CGI 是 Common Gateway Interface 的 简 称 。 其 主 要 的 功 能 是 在 WWW 环 境 下 , 藉 由 从
客 户 端 传 递 一 些 讯 息 给 WWW Server , 再由 WWW Server 去 启 动 所 指 定 的 程 式 码 来 完
成 特 定 的 工 作 。所 以 更 明 确 的 说 , CGI 仅 是 在 WWW Server 上 可 执 行 的 程 式 码,
而 她 的 工 作 就 是 控 制 讯 息 要 求 而 且 产 生 并 传 回 所 需 的文 件 。
二、关于 #!/usr/bin/perl
??在PERL CGI中,第一行必须是服务器上PERL解释器的位置,一般是#!/usr/bin/perl,注意,前面的#!不能
去掉,这个如有不明,要向管理员询问。如果是在WIN95/NT的机上装了PERL解释器(如ActivePerl、Perl
For Win32),在CGI中不用专门定义PERL解释器位置了,就保留#!/usr/bin/perl就行了,或者如果%path%环
境变量中有PERL的路径的话,就写#!perl也可以。
三、关于CGI上传的方式
??上传CGI文件一定要用ASCII方式,不然执行时会出现500 Internal Server Error的出错提示,许多FTP软
件的AUTO上传方式里关于*.CGI、*.PL的上传方式都定义了BINNARY方式,一定要设为ASCII方式上传或在
ASCII FILES的定义中添加*.CGI、*.PL的定义。特别地,在WIN95/NT中不用改CGI、HTML、目录的属性。
四、关于CGI程序的属性
??在Unix Like的服务器中(95/NT除外),CGI程序的属性一定要设为可执行(755),才能正常执行,而与
CGI有关的HTML文件、数据文件、目录等,如要被CGI程序写入的,一定要设为可写(666)。那么,什么是
755属性,什么是666属性呢?
在Bullet Proof FTP软件中,在远程文件或目录上用MOUSE右键按一下,
在属性一项,有OWNER、GROUP、 PUBLIC 三项
OWNER
GROUP
PUBLIC
说明
Read
Read
Read
此项如选中,值为4
Write
Write
Write
值为2
Execute
Execute
Execute
值为1

属性755
OWNER 下的READ、WRITE、EXECute都要选中,它们的值加起来等于7。
GROUP 下的READ、EXECute选中,值加起来等于5
PUBLIC下的READ、EXECute选中,值加起来等于5
这样就是755了,明白了吗?那么666不用我说了。
 
五、关于绝对路径和相对路径
??绝对路径就是你的主页上的目录在硬盘上真正的路径,相对路径其实就是URL。
六、关于PERL CGI程序调试的简单方法
??如果在自已的PWIN95/98/NT系统装了WEB SERVER(如APACHE)和PERL解释器(如ActivePerl)后,调试
PERL CGI程序就较方便,容易发现错误。如果在Web Server 中出现500 Internal Server Error,可进入
MS-DOS窗口,再转到该CGI的目录,打 perl 文件名.cgi 就可以根据出错提示判断错误在哪里。
 
问题解决了,多谢各位,jet说的都对。
 
to jet:这里给你50分,去我的奇怪里再拿100分。
 
多人接受答案了。
 
后退
顶部