当前位置: 代码迷 >> CGI >> 请问:linux下怎么运行perl程序
  详细解决方案

请问:linux下怎么运行perl程序

热度:648   发布时间:2013-09-11 17:59:58.0
请教:linux下如何运行perl程序?
环境是Red HAT linux AS 4 + httpd2.2.8 ,
perl是linux自带的,版本是v5.8.5 built for i386-linux-thread-multi
cgi-bin位置是:/usr/local/apache2/cgi-bin
httpd.conf配置文件中,有关 cgi的配置如下:
--------------------
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
---------------------
自写的程序名是test.cgi :代码如下:
--------------------------------------------
print "Content-type:text/html\n\n "; 
print " <HTML> \n "; 
print " <HEAD> \n "; 
print " <TITLE> hello </TITLE> \n "; 
print " </HEAD> \n "; 
print " <BODY> \n "; 
print "hello\n "; 
print " </BODY> \n "; 
print " </HTML> \n ";
---------------------------------------------
执行这个test.cgi程序报错如下:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, ggfsoft@sina.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


请问好心的高手们帮忙指点一下, 错在哪里呢,哪里没弄对??


------解决方案--------------------
perl是linux自带的,版本是v5.8.5 built for i386-linux-thread-multi 
cgi-bin位置是:/usr/local/apache2/cgi-bin 
httpd.conf配置文件中,有关 cgi的配置如下: 
-------------------- 
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" 

<Directory "/usr/local/apache2/cgi-bin"> 
AllowOverride None 
Options None 
Order allow,deny 
Allow from all 
</Directory> 
--------------------- 
 
这一步应该没错,原因我给分析下
第一:配置问题
你在httpd.conf中在检查下这些代码是否加上了
AddHandler cgi-script .cgi
这是是否能执行cgi文件的意思。
这里有可能被#屏蔽掉了,自己搜索下改回来就可以了。没有的话就自己复制下添加进去。

第二:路径问题
在Linux环境中,你要创建的cgi文件必须在你apache所指定的地方创建。
现在你是在/usr/local/apache2/cgi-bin这个目录下可以放置cgi文件。
第三:权限问题
你创建的cgi文件权限要改下,要可执行,现在就直接改成755吧。
第四:cgi文件格式问题
你的写法不对,我给你写个吧
Perl code
#! /usr/bin/perl

print "Content-type: text/html\n\n";

print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello Html</title></head>\n";
print "<body>Hello World</body>\n";
print "<html>";

------解决方案--------------------
这个一般是后缀名引起的错误,后缀为cgi的文件没有在apache里配置为可以执行的程序,你把文件名修改为test_cgi再试一下
另外你的程序本身是有问题,需要把楼上的进行一下修改,就是要在第一行加上
#! /usr/bin/perl

然后在输出任务内容之前加上
print "Content-type: text/html\n\n";

最后需要把结果文件修改为可执行属性,chmod +x test_cgi

------解决方案--------------------
推荐你看一些perl方面的电子书吧

[*]XML and PHP ebook free download
[*]PHP in a Nutshell ebook free download
[*]PHP Cookbook ebook free download
[*]Programming PHP ebook free download
[*]PHP Hacks ebook free download
[*]Learning PHP 5 ebook free download
[*]Essential PHP Security ebook free download
[*]Upgrading to PHP 5 ebook free download
[*]Extending and Embedding PHP ebook free download