【问题标题】:How to launch PHP from Perl? [duplicate]如何从 Perl 启动 PHP? [复制]
【发布时间】:2011-11-16 01:00:03
【问题描述】:

可能重复:
How can I invoke a PHP script from Perl?

我使用 PHP 脚本根据传递给它的 URL 参数输出不同的文本。之后,它被一个特殊的程序接收。现在我正在编写一个 Perl 脚本,在其中我应该能够根据相同的参数接收相同的文本。

如何使用现有的 PHP 脚本(即将 PHP 输出复制到 Perl 程序内的变量)来实现?我找到了一个关于集成这些语言的article,但它使用了一个特殊的模块PHP::Interpreter。有没有更简单(嵌入式)的方法来做到这一点?谢谢。

【问题讨论】:

  • 确实,反引号通常就足够了。但是,您必须使用 php-cgi 解释器,而不是命令行版本。然后继承的环境变量(SERVER_GATEWAY, QUERY_STRING, ...)将允许 PHP 脚本原封不动地运行以产生输出。
  • @eugene y,抱歉,没注意到那个。
  • @mario,谢谢,我试试php-cgi

标签: php perl


【解决方案1】:

根据上面的 cmets 你想在远程服务器上执行 PHP 脚本。 我假设,PHP 脚本可以通过网络在某个位置获得,例如“http://phpserver.com/yourscript.php”。

然后你可以使用LWP包在远程服务器上执行你的PHP脚本:

use LWP::Simple;
my $response = get("http://phpserver.com/yourscript.php");
print $response; 

【讨论】:

  • 成功了,非常感谢!已经很棒了,但你不能告诉我,LWP 模块是否预装了 Perl?
  • 它不是CORE 模块,但它安装在大多数网络主机上。根据您的系统,您可以使用apt-get install libwww-perlcpan LWP 安装它
  • 我的同事(在其他机器上)也应该使用这个脚本,下载和安装附加模块将是他们的另一个条件。但现在我看到你的是最好的解决方案。非常感谢!
  • 您也可以考虑使用 wget 或 curl 命令接收响应,具体取决于您的系统上可用的命令。将get(...) 替换为`curl '$url'``wget -qO- '$url'`
【解决方案2】:

您可以使用反引号 (``) 执行任何外部命令,并将结果输出存储在变量中。在你的情况下,这样的事情应该可以工作:

$result = `php myscript.php`;

现在的输出是标量 $result

【讨论】:

  • 谢谢,但是不会有问题,因为我的Perl-script的工作目录在我的本地机器上,而PHP-script应该在远程服务器上执行?
  • 正如我所料,我得到“'php' 不是内部或外部命令、可运行程序或批处理文件。”尝试此解决方案时在 STDERR 中。
  • 当然,您必须考虑到您的 php 二进制文件的完整路径(假设您在本地执行)。所以为了更清楚,我想我可以写成: $result = /path/to/php myscript.php;既然你现在已经表明你希望在远程服务器上执行它,那么像 yko 的解决方案应该适合你。
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2021-06-04
  • 2016-04-17
  • 2015-09-09
  • 2012-04-13
  • 1970-01-01
相关资源
最近更新 更多