Perl cgi脚本以纯文本形式运行

Perl cgi脚本以纯文本形式运行,perl,apache,cgi,Perl,Apache,Cgi,在我们开始之前,我想说我已经读过: 我读过,尝试过,但没有成功(很遗憾) 我在Ubuntu上 我想运行cgi脚本,它们可以很好地编译,我对该文件夹拥有适当的权限(至少我没有遇到我在尝试通过浏览器输入时没有遇到的错误),并且文件以纯文本形式运行 首先是我尝试运行的文件: #!/usr/bin/perl use CGI qw/:standard/; print header, h1('CGI.pm is simple.'), end_html; 我得到源代码作为输出 文件夹的路径是/

在我们开始之前,我想说我已经读过:

我读过,尝试过,但没有成功(很遗憾)

我在Ubuntu上

我想运行cgi脚本,它们可以很好地编译,我对该文件夹拥有适当的权限(至少我没有遇到我在尝试通过浏览器输入时没有遇到的错误),并且文件以纯文本形式运行

首先是我尝试运行的文件:

 #!/usr/bin/perl

 use CGI qw/:standard/;
 print header,
 h1('CGI.pm is simple.'),
 end_html; 
我得到源代码作为输出

文件夹的路径是
/var/www/a2/

apache.config文件中的配置为:

ScriptAlias /a2/ /var/www/a2/
<Directory "/var/www/a2">
AddHandler cgi-script .cgi .pl
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
ScriptAlias/a2//var/www/a2/
AddHandler cgi script.cgi.pl
不允许超限
选项执行CGI
命令允许,拒绝
通融
该文件可以很好地编译并在终端中打印html

我唯一的猜测是,我没有给予该文件适当的权限

编辑:我检查了错误日志。这并没有给出一个错误

编辑:在与Mark Setchell进行了很长时间的讨论后,发现了错误。我在错误的.config文件中发布了此内容,并且一直使用错误的(未配置的文件夹)。

我没有看到任何错误

#!/usr/bin/perl
在脚本的顶部。如果没有它,CGI处理程序将不知道如何执行它。

我看不到

#!/usr/bin/perl

在脚本的顶部。没有它,CGI处理程序将不知道如何执行它。

以下是一些可以尝试的方法:

  • 确保您的脚本以扩展名“.pl”命名

  • 确保脚本是可执行的。通过键入以下内容执行此操作:

    chmod+x yourscript.pl

  • 正如Mark所说,确保将shebang作为脚本的第一行:

    #!/usr/bin/perl

  • 删除最后的“1;”,您只需要对包/模块使用它


  • 以下是一些可以尝试的东西:

  • 确保您的脚本以扩展名“.pl”命名

  • 确保脚本是可执行的。通过键入以下内容执行此操作:

    chmod+x yourscript.pl

  • 正如Mark所说,确保将shebang作为脚本的第一行:

    #!/usr/bin/perl

  • 删除最后的“1;”,您只需要对包/模块使用它


  • 确保启用apache cgi模式

    sudo a2enmod cgi   //will enable the cgi mode
    sudo service apache2 restart
    
    确保.cgi文件的文件权限正常

    sudo chmod 755 yourFile.cgi
    
    尝试通过终端执行它

    perl /Path_To_The_File/fileName.cgi
    
    确保fileName.cgi在文件顶部包含以下代码

    #!/usr/bin/perl -w
    
    print "Content-type: text/html\n\n";
    

    确保启用apache cgi模式

    sudo a2enmod cgi   //will enable the cgi mode
    sudo service apache2 restart
    
    确保.cgi文件的文件权限正常

    sudo chmod 755 yourFile.cgi
    
    尝试通过终端执行它

    perl /Path_To_The_File/fileName.cgi
    
    确保fileName.cgi在文件顶部包含以下代码

    #!/usr/bin/perl -w
    
    print "Content-type: text/html\n\n";
    

    出现了一个有趣的错误!现在它正试图下载它:D编辑:下载,因为在浏览器中询问我在哪里下载该文件。出现了一个有趣的错误!现在它正试图下载它:D Edit:download,因为浏览器中有人问我在哪里下载文件。1)脚本的扩展名为.pl。2) 我以root用户身份执行命令。3) 我有雪邦。4) 我已经用我正在使用的一个新示例更新了脚本(更短、更直接)。它仍然以纯文本形式打印。因此,如果脚本名为“fred.pl”,那么当您键入“./fred.pl”时会发生什么!我们正在取得进展。我没有运行脚本的权限。上面写着“拒绝许可”。脚本是tt1.pl,我运行的命令是sudo chmod-x tt1.pl,我没有收到任何错误。请稍等片刻,尝试键入“chmod 777 tt1.pl”,然后再试一次。它仍然不起作用,现在在我尝试运行它时它会给出一个错误(./tt1.pl)1)脚本的扩展名为.pl。2) 我以root用户身份执行命令。3) 我有雪邦。4) 我已经用我正在使用的一个新示例更新了脚本(更短、更直接)。它仍然以纯文本形式打印。因此,如果脚本名为“fred.pl”,那么当您键入“./fred.pl”时会发生什么!我们正在取得进展。我没有运行脚本的权限。上面写着“拒绝许可”。脚本是tt1.pl,我运行的命令是sudo chmod-x tt1.pl,我没有收到任何错误。请稍等片刻,尝试键入“chmod 777 tt1.pl”,然后重试。它仍然不起作用,现在在我尝试运行它时,它会给出一个错误(./tt1.pl)