2014-09-26 33 views
2

我想从我的其他网站调用PHP函数外调用函数在PHP ...它是可能 php文件是这个样子我的服务器上 - daplonline.in/short.php如何从mysite的

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

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

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

的输出有你在处理有任何错误这个脚本? – DeDevelopers 2014-09-26 11:01:45

+0

Impossible: http://stackoverflow.com/questions/3101327/using-includes-cross-domain-that-c​​ontain-php-code-failing – 2014-09-26 11:02:23

+0

这是不可能的没有...即使这个网站是在相同的生产服务器ü会得到一个base_restriction对此包括 – DarkBee 2014-09-26 11:02:27

回答

1

您要找的内容在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并得到返回的数据。

+0

[它在PHP中,但由于其他原因未提出](http://stackoverflow.com/questions/1158348/including-a-remote-file -in-php):) – NoobEditor 2014-09-26 11:04:46

0

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

allow_url_include布尔

此选项允许有以下功能使用URL的fopen封装的:包括,include_once,要求,require_once。

ini_set('allow_url_include', 1); 

延伸阅读:including a remote file in PHP

+0

应该提到的是,对于包括HTTP在内的URL,目标服务器不能解释请求的脚本,而是按原样返回。 – lafor 2014-09-26 11:07:22

+0

哪里喊我ste? ini_set('allow_url_include',1); – 2014-09-26 11:13:25

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脚本

+0

我想从我的其他网站调用函数writeMsg()只有 – 2014-09-26 11:09:00

+0

然后可能使用'allow_url_include'方法会更好。但是,如果'writeMsg()'不带任何参数,并且只想调用该函数,那么也可以使用CURL。该外部文件将调用该函数并返回输出。所以你只需在主网站的页面上显示它。 – cornelb 2014-09-26 11:11:21

+0

allow_url_include是安全的? – 2014-09-26 11:21:39

相关问题