perl-cgi脚本可以't发布到站点-独立工作,但在apache下运行时失败
perl cgi script can't post to site - works standalone but fails when running under apache
我编写了一个Perl CGI脚本,该脚本使用POST从网站获取html页面,然后对html数据进行一些处理并打印输出的html内容。
我的脚本url:http://mysite.com/cgi-bin/p.pl
网站URL:http://site.com/interesting.asp
#!/usr/bin/perl
# p.pl
...
sub post_url {
my( $url, $formref ) = @_;
my $ua = new LWP::UserAgent(timeout => 300);
my $response = $ua->post($url, $formref );
if( $response->is_success ){
return $response->content;
} else {
return undef;
}
}
my $url = 'url: http://site.com/interesting.asp';
my %param = ('eno' => '1234', 'submit' => 'Submit');
my $htmlcontent = post_url( $url, '%param ); # <--- Not working
... do some processing on $htmlcontent ...
... print out html page ...
脚本从命令行运行时运行良好,但从Web服务器运行时无法从站点获取HTML页面。是因为脚本试图从不同的域/IP地址访问页面吗?有人能提出一个变通办法吗?
这可能有很多原因。假设实际调用了cgi脚本(即,它安装在web服务器的正确位置(,我将确保LWP
实际安装在服务器上。事实上,在各种情况下,我不得不手动安装它,YMMV。
在脚本失败的情况下输出一些诊断将非常有帮助。。。new LWP::UserAgent
成功了吗?如果是,帖子后面的$response->status_line
是什么?
编辑:
由于您的错误消息是"500权限被拒绝",因此您的web服务器可能已阻止所有传出连接。您应该检查您的提供程序是否允许通过某些代理进行传出http连接,并将其配置到LWP::UserAgent中。如果没有可用的代理,那么可能就没有办法出去了。在不了解您的托管提供商设置的情况下,我们无法提供帮助;也许你可以向你的托管提供商寻求支持。。。
您应该从$url:中删除"url:">
my $url = 'http://site.com/interesting.asp';
在CentOS 6.3上,您可以使用此命令在Perl脚本中启用Apache的出站web连接:
# setsebool -P httpd_can_network_connect on
此页面可以告诉您有关SELinux和HTTPD设置的更多信息:http://wiki.centos.org/TipsAndTricks/SelinuxBooleans
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 两个独立工作的javascript函数,但不能一起工作
- Fancybox图像点击可以独立工作,但不能与我的其他代码一起工作
- 如何在gump工作流中同时在独立文件和依赖文件中输出javascript
- 多个 Angular 验证器独立工作,但不能一起工作
- Meteor Mongo不工作,但独立的MongoDB工作
- 可点击的Svg与html内联不在Safari中工作,但独立工作
- 2个SQL查询.两者独立工作.当我把它们放在一起时,第一个查询的结果变量是空的.为什么?
- Drupal块-两个作为块独立工作的java脚本;放在同一页上不起作用
- 有两个独立的
- 我如何获得多个独立的文档.Onkeydown事件工作
- 如何将js从两个独立的服务精简到前端协同工作
- 如何让一个页面上的两个开关独立工作
- 获得多个fadeToggle与相同的类名独立工作
- 独立的JQuery代码不能在我的浏览器中工作
- perl-cgi脚本可以't发布到站点-独立工作,但在apache下运行时失败
- 将两个独立的java脚本组合在一起,使它们仍然可以工作
- 引导-巡回独立不工作