使用任何方法(非cURL!)请求另一个PHP文件



我正在用PHP构建一个API,并希望用户在指定的目录中包含一些用任何选择的语言编写的插件。这样做的方法是API向该用户的插件文件发送一个请求并返回结果。

这应该在没有cURL的情况下完成,因为cURL在这个特定的环境中不可用,所以使用cURL的答案没有帮助。

我遇到的问题是,当插件也是用PHP编写时,我的函数实际上读取文件的内容(而不执行它(。

这是我的代码:

function sendRequest($url, $method, $body){
$http = array(

'method' => $method,
'header' => 'Authorization: sometoken' . "rn".
'Content-Type: application/json' . "rn",
'content' => $body

);

$context = stream_context_create(array('http' => $http));
if($file = file_get_contents($url, false, $context)){
return $file;
}
else{
return 'Error';
}
}

这是一个用PHP编写的简单插件文件的示例:

<?php
$input = file_get_contents('php://input');
$input = json_decode($input, true);
echo($input['a'] + $input['b']);
?>

当从API请求它时,它应该返回a+b的值。上面的代码也可以用任何其他语言实现,它应该以任何一种方式工作。这些文件存储在本地,而不是远程服务器上(在那里它可以完美地工作(。

有没有办法强制执行没有cURL的文件?我想includerequire也不是一个选项,因为插件文件应该使用所选的语言,而不一定是PHP。

提前感谢!

您需要查看PHP命令exec

这将允许您对以下内容执行操作:

exec('php plugin.php param1', $output);

然后通过$output变量读回结果。

其他应用程序/脚本也可以做类似的事情(前提是它们在处理过程中完全没有交互(。

最新更新