【问题标题】:Perl + Apache + CGIPerl + Apache + CGI
【发布时间】:2013-10-26 20:30:54
【问题描述】:

如何从本地主机运行 perl 脚本?

我已经安装了 Apache 2.2 和 Active Perl 5.16.3。 我能够从命令提示符运行 perl 脚本。 但由于我正在处理 Web 应用程序,我希望它从 localhost 运行。

但是,我在浏览器中收到以下错误

内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。

请帮帮我!

【问题讨论】:

  • 服务器的错误日志中应该有更多的细节。
  • 你的脚本是什么样的?

标签: windows perl apache cgi


【解决方案1】:

您的问题可能与 Apache 的配置有关。 (可能是 Apache 需要为 .cgi 脚本进行配置) - 如果是这种情况,那么您可以在此处找到有关此方面的好信息:

http://www.perlmonks.org/?node_id=44536
http://www.cgi101.com/book/connect/winxp.html
http://www.editrocket.com/articles/perl_apache_windows.html

通常需要做很多事情才能使其正常工作。遵循良好的 HOWTO 以确保所有内容都已正确安装和配置,通常可以让您在本地 Windows 机器上执行脚本。

【讨论】:

    【解决方案2】:

    您可以从网络浏览器运行 cgi 脚本。 CGI 意味着它应该在将任何输出发送到服务器(将其发送回浏览器)之前发送一个 HTML 标头。

    http://perldoc.perl.org/CGI.html#NAME

    http://www.cs.tut.fi/~jkorpela/perl/cgi.html

    像这样:

    use CGI; # load CGI routines
    $q = CGI->new; 
    print $q->header; # create the HTTP header
    print $q->start_html('hello world'); # start the HTML
    
    ### your script logic goes here
    
    print $q->end_html; # end the HTML
    

    当然,CGI 已经过时了,对于新的开发,你应该使用一些最近的框架,比如:Dancer、Mojolicious、...

    【讨论】:

    • 这解决了我的问题。测试脚本有效,但我的没有,尽管具有相同的权限。事实证明,错误是因为我的 perl 脚本在其输出中缺少标题:添加 print "Content-type: text/plain; charset=iso-8859-1\n\n"; 解决了这个问题。
    【解决方案3】:

    如果有人在 2017 年寻找答案,请在 Windows 2010 机器上关注此问题。

    1. 从 perl 站点下载 Strawberry perl 安装在默认目录。C:\Strawberry

    2. https://httpd.apache.org/download.cgi#apache24下载Apache

    3. 一旦你成功让 apache 服务器运行,那么

    4. 将 perl 脚本放在 Apache24/cgi-bin/ 文件夹中。 perl 脚本的第一行应该指向安装 perl 的路径,我的情况是 #!C:/Strawberry/perl/bin/perl.exe 您应该根据安装文件夹更改路径

    文件名 - first.pl

    #!C:/Strawberry/perl/bin/perl.exe
    print "Content-type: text/html\n\n";
    print "Hello, World.";
    
    1. 现在您可以从浏览器http://localhost/cgi-bin/first.pl 运行您的脚本

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2014-10-12
      • 2023-04-04
      • 2021-02-20
      • 1970-01-01
      • 2010-10-08
      • 2012-01-19
      相关资源
      最近更新 更多