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


how to call function in php outside from mysite

我想从另一个站点调用php函数。。。这是可能的php文件在我的服务器上是这样的-daplonline.in/short.php

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

我想从我的另一个网站调用这个函数,这可能吗?

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

您要查找的在Java中称为RMI。但据我所知,PHP中没有任何东西可以进行"远程方法调用"。所以我认为这是不可能的。

但是,您可以编写一个脚本,根据请求的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的响应并获取返回的数据。

可以。不过,这是一个巨大的安全风险。

allow_url_include 布尔型

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

ini_set('allow_url_include', 1);

进一步阅读:在PHP 中包含远程文件

您可以使用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脚本的输出