【问题标题】:Communication between PHP and Perl CGI scriptsPHP 和 Perl CGI 脚本之间的通信
【发布时间】:2013-05-13 12:51:00
【问题描述】:

我有两个脚本在服务器上执行不同的任务。一个是用 Perl (.cgi) 编写的,另一个是用 PHP 编写的。

我正在尝试通过执行以下操作从 perl CGI 脚本发出请求:

$ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
$ua->timeout(30);

$queryStr = (xxxMaskedxxx);
$request = HTTP::Request->new('GET', $queryStr);
$response = $ua->request($request);
if ($response->is_success)
{
        $search = strpos($res->content, "not");
        if($search==true)
        { return -1; }
}

我尝试了两种方法从 PHP 发回结果:

这个:

HttpResponse::setCache(true);
HttpResponse::setContentType('text/html');
if (!$result)
        HttpResponse::setData("<html>Message not delivered</html>");
else
        HttpResponse::setData("<html>Message successfully delivered</html>");
HttpResponse::send();

还有这个:

echo "Content-type: text/html\n\n";
if (!$result)
      echo 'Message not delivered' . PHP_EOL;
else
      echo 'Message successfully delivered' . PHP_EOL;

但是$response-&gt;is_success 在两种情况下都返回 false?当我尝试打印响应时,我得到了这个:

响应是 HTTP::Response=HASH(0x97a8b34)

我做错了什么?

这两个脚本也并排放置。他们之间有没有更好的沟通方式?

【问题讨论】:

  • (xxxMaskedxxx); 应该是"xxxMaskedxxx"; 如果安装了php cli 版本,您可以从perl 执行php 脚本。
  • @mpapec 你有我可以关注的样本吗?我仍然不清楚如何使用 php cli 从 PHP 脚本中捕获返回。
  • 看看下面的示例。 cli 模式下的 php 接受存储在 $argv 中的命令行参数

标签: php web-services perl cgi


【解决方案1】:

Perl 使用命令行参数调用 cli.php 脚本,

#!/usr/bin/perl

my $content = `/usr/bin/php cli.php xxxMaskedxxx`;

print $content;

cli.php 回显收到的参数

<?php

// output first argument from command line
print $argv[1];

【讨论】:

    【解决方案2】:

    但是 $response->is_success 对于这两种情况都返回 false?

    在这两种情况下,您都会输出默认的HTTP status,即“200 OK”。您需要output a status code 表示失败,is_success 才能失败。

    当我尝试打印响应时,我得到了这个

    那是HTTP::Response object。如果要从中获取文本,则需要检查 $response-&gt;decoded_content

    【讨论】:

      猜你喜欢
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 2012-03-10
      相关资源
      最近更新 更多