【问题标题】:running a perl cgi script from a webpage (html)从网页 (html) 运行 perl cgi 脚本
【发布时间】:2012-08-15 02:42:50
【问题描述】:

我一直在寻找有关如何从 html 网页运行 perl 程序的教程。我找不到一个教程,甚至找不到一个很好的起点来清楚地解释如何做到这一点......

我想做的是在 perl 中使用 WWW::mechanize 在 wordpress 网站的后端为我填写一些信息。在我能做到这一点之前,我只想看到检索到的 html 显示在浏览器中,就像实际网站将显示在浏览器中一样。这是我的 perl:

print "Content-type: text/html\n\n";
use CGI;
use WWW::Mechanize;
my $m = WWW::Mechanize->new();



use WWW::Mechanize;
$url = 'http://www.storagecolumbusohio.com/wp-admin';
$m->post($url);
$m->form_id('loginform');
$m->set_fields('log' => 'username', 'pwd' => 'password');
$page = $m->submit();
$m->add_handler("request_send",  sub { shift->dump; return });
$m->add_handler("response_done", sub { shift->dump; return });
print $page->decoded_content;

此代码在命令提示符下工作(实际上我在 mac 上,所以是终端)。但是,当用户单击链接时,我希望它能够在网站上工作。

我学到了一些东西,但是因为我是一个 perl 菜鸟,所以这让我感到困惑。似乎有两种方法可以做到这一点(我可能是错的,但这是我从我所阅读的内容中收集到的)。人们一直在谈论的一种方式是使用某种“模板方法”,例如 embperl 或 modperl。另一种是将 perl 程序作为 cgi 脚本运行。从我在各个网站上阅读的内容来看,cgi 似乎是最简单和最常见的解决方案?为了做到这一点,我被告知我需要更改 httpd.conf 文件中的几行。我在哪里可以找到该文件来更改它?我知道我在 apache 服务器上,但我的网站是由 dreamhost 托管的。我还能访问此文件吗?如果可以,如何访问?

任何帮助将不胜感激,因为您可能会说我不知道​​并且很困惑。

【问题讨论】:

标签: html perl cgi dreamhost


【解决方案1】:

To use a cgi script on dreamhost,就够了

  1. 给脚本一个.cgi 扩展名
  2. 将脚本放在网络服务器可见的地方
  3. 赋予脚本正确的权限(至少 0755)

你可能想看看你能不能得到一个玩具脚本,比如说,

#!/usr/bin/perl
print "Content-type: text/plain\n\nHello world\n";

在调试较大的脚本之前工作。

也就是说,我在您的脚本中没有看到的是标题。我想你会想说类似的话

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

你的另一个 print 电话之前。

【讨论】:

  • 谢谢!这仍然花了我一段时间,但由于您的帮助,我终于弄清楚了。您发布的“在 Dreamhost 上使用 cgi 脚本”的链接与此站点相结合:javascriptkit.com/howto/adashimar/index.shtml 和这个:stadtaus.com/en/tutorials/chmod-ftp-file-permissions.php 非常有帮助。我能够从那里弄清楚。感谢@mob 的帮助!
  • 仅供任何面临类似问题或卡在同一个地方的人,我不必将文件扩展名更改为 cgi。我使用了包含 .htaccess 文件的文件夹方法,它将将该文件夹中的所有文件作为 cgi 脚本运行(参见上面@mob 发布的 dreamhost wiki 链接)。一旦我这样做了,我必须进入 filezilla,右键单击 perl 文件并单击“文件权限”。然后在权限表单中给文件 755 数值。我花了一段时间才弄明白,因为那里的所有 tuts 都假设你知道一些事情,并留下了很大一部分谜题。
【解决方案2】:

我建议您先在本地服务器上测试您的代码。 我假设您正在使用 windows 或类似的东西来解决您的问题,因此请使用 xamp http://www.apachefriends.org/en/xampp.html 或 wamp http://www.wampserver.com/en/ 或获取像 http://www.debian.org 这样的真实操作系统(您也可以在 vm 中运行它)。

您不应该像那样打印内容类型,而是使用“打印标题”,请参阅此页面: http://perldoc.perl.org/CGI.html#CREATING-A-STANDARD-HTTP-HEADER%3a

确保您已为 perl 正确配置了 apache 服务器,另请参阅以下常见问题: http://oreilly.com/openbook/cgi/ch12_01.html

另请参阅How can I send POST and GET data to a Perl CGI script via the command line? 以进行命令行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 2013-03-11
    • 1970-01-01
    • 2019-03-07
    • 2012-01-19
    • 2014-10-30
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多