如何从mysite外部调用php中的函数

时间:2014-09-26 10:59:29

标签: php url

我想从我的其他网站调用一个php函数......这是可能的 php文件在我的服务器上看起来像这样 - daplonline.in/short.php

<?php
function writeMsg() {
  echo "Hello world!";
}
?>

我想从我的其他网站调用此功能是否可能?

<?php
    include("http://daplonline.in/short.php"); //it is 777
    writeMsg();
?>

3 个答案:

答案 0 :(得分:1)

您正在寻找的内容在Java中称为RMI。但据我所知,PHP中没有任何内容可以执行&#34;远程方法调用&#34;。所以我认为这是不可能的。

但是你可以编写一个脚本,根据请求的URI调用正确的函数。

所以让我们对$_GET参数说:

  

http://daplonline.in/rmi.php?method=short.writeMessage

然后在您的rmi.php中,您必须根据method参数调用正确的函数。

<?php

list($scriptName, $methodName) = explode('.', $_GET['method']);

require $scriptName . '.php';

echo serialize(call_user_func($methodName));

快速而肮脏地抽象它。您可以unserialize() rmi.php的响应,并获取返回的数据。

答案 1 :(得分:0)

是的,你可以。然而,这是一个巨大的安全风险。

  

allow_url_include 布尔

     

此选项允许使用具有以下功能的URL感知fopen包装器:include,include_once,require,require_once。

ini_set('allow_url_include', 1);

进一步阅读:including a remote file in PHP

答案 2 :(得分:0)

您可以使用CURL连接到该文件,并指定参数。

该文件可以检查该参数并调用特定函数。

这不完全是你想要的,但它应该有效。最好将它变成API,而不是包含外部PHP文件,然后从中调用函数。您可以通过这种方式添加更多安全性,例如仅接受来自某些URL的连接。

short.php将包含类似

的内容
<?php
function writeMsg() {
    echo "Hello world!";
}
writeMsg();
?>

来自其他服务器的文件可以包含

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://daplonline.in/short.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

$result将是short.php脚本

的输出