我有两个现有的脚本可以作为个人使用。
主要脚本是Perl。我希望从Perl脚本中的sub执行PHP脚本。
通常,PHP脚本只是通过直接网址运行,例如http://me.com/phpscript.php?foo=bar
我想从Perl调用PHP脚本并传递foo var所以,我不需要用我的浏览器点击PHP脚本来处理数据。
我没有足够的才能将PHP脚本重写为Perl。
我试过exec(“http://me.com/phpscript.php?foo=bar”);并包括和系统无济于事。
我已阅读并搜索过但是,只找到了从PHP调用Perl的解决方案。
我非常感谢我在这里一直很好的指导。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
如果脚本位于本地文件系统上,您应该能够使用php解释器和文件路径直接执行它。要通过网络访问它,请使用LWP
包。
例如:
exec('/usr/bin/php', 'myscript.php', @arguments);
请注意,命令行参数的处理方式与URL参数不同;您的PHP脚本可能需要修改才能正确使用它们。
答案 2 :(得分:0)
如果添加#!PathToPhp
,可以直接运行php文件 ./myscript.php
在使用argc或argv或args的文件中,你可以获得传递给这个文件的参数,最基本的是args
#!/bin/php
<?php
foreach($args as $key => $value){
echo "\n".$key.":".$value;
答案 3 :(得分:0)
有一个CPAN包,旨在提供PHP和Perl之间的桥梁:
此类封装了嵌入式PHP5解释器。它为PHP解释器中声明的所有函数提供代理方法(通过AUTOLOAD),将Perl数据类型透明转换为PHP(反之亦然),以及PHP类似地调用Perl子例程并访问Perl符号表的能力。 / p>
这个包的目标是构建一个跨越式桥,用于并行运行PHP代码和Perl代码。
不确定这是多么稳定。参见