【问题标题】:How can I pass a url or variable from Perl to PHP?如何将 url 或变量从 Perl 传递到 PHP?
【发布时间】:2011-05-02 01:07:32
【问题描述】:

我有两个现有的脚本可以作为个人正常工作。

主要脚本是 Perl。我希望从 Perl 脚本中的 sub 执行 PHP 脚本。

通常,PHP 脚本只是通过直接 url 运行,例如http://me.com/phpscript.php?foo=bar

我只想从 Perl 调用 PHP 脚本并传递 foo var,所以我不需要用浏览器点击 PHP 脚本来处理数据。

我没有足够的天赋将 PHP 脚本重写为 Perl。

我试过 exec("http://me.com/phpscript.php?foo=bar");并包含和系统无济于事。

我已经阅读并搜索过,但只找到了从 PHP 调用 Perl 的解决方案。

我非常感谢我在这里一直很好的出色指导。

【问题讨论】:

标签: php perl variables


【解决方案1】:

似乎 LWP::UserAgent 应该适用于这种情况。

require LWP::UserAgent;

 my $ua = LWP::UserAgent->new;
 $ua->timeout(10);
 $ua->env_proxy;

 my $response = $ua->get('http://me.com/phpscript.php?foo=bar');

 if ($response->is_success) {
     print $response->decoded_content;  # or whatever
 }
 else {
     die $response->status_line;
 }

【讨论】:

    【解决方案2】:

    添加#!PathToPhp就可以直接运行php文件

      ./myscript.php
    

    在该文件中使用 argc 或 argv 或 args 您可以获得传递给该文件的参数,最基本的是 args

      #!/bin/php
      <?php
      foreach($args as $key => $value){
       echo "\n".$key.":".$value;
    

    【讨论】:

    • 谢谢,但是我尝试了此页面上的所有内容,但 PHP 脚本没有执行。我想我需要一个完整的例子。
    • @DulcimerDude:请参阅:php.net/manual/en/features.commandline.usage.php,了解如何从命令行调用 PHP 脚本。这样,您可以从 Perl 脚本中的任何系统调用中调用这些 PHP 脚本。
    【解决方案3】:

    如果脚本位于本地文件系统上,您应该能够使用 php 解释器和文件路径直接执行它。要通过网络访问它,请使用LWP 包。

    例如:

    exec('/usr/bin/php', 'myscript.php', @arguments);
    

    请注意,命令行参数的处理方式与 URL 参数不同;您的 PHP 脚本可能需要修改才能正确使用它们。

    【讨论】:

    • 是的,它们甚至在同一个目录中。你说的其他一切都超出了我的想象。你能给我一个详细的例子吗?
    • 这看起来很有希望。目前 $_GET["foo"] 在 php 脚本中。那是唯一需要传递的变量。我将如何修改 PHP 脚本和您的示例以传递和获取 foo?
    【解决方案4】:

    有一个 CPAN 包旨在提供 PHP 和 Perl 之间的桥梁:

    这个类封装了一个嵌入式 PHP5 解释器。它为 PHP 解释器中声明的所有函数提供代理方法(通过 AUTOLOAD),透明地将 Perl 数据类型转换为 PHP(反之亦然),并且 PHP 能够类似地调用 Perl 子例程和访问 Perl 符号表。

    这个包的目标是为并行运行 PHP 代码和 Perl 代码构建一个透明的桥梁。

    但不确定这有多稳定。见

    【讨论】:

    • 我会试试这个。我已经尝试了以上所有方法,但没有任何东西对我有用。所有这一切只是为了传递一个变量。这对我来说非常困难。
    • @Dulcimer 好吧,究竟是什么不起作用?脚本会运行但不接收输入吗?如果它运行,您是否正在尝试使用$_GET['foo'] 而不是$argv 来获取bar
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2012-04-28
    • 2014-11-30
    • 2019-01-23
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多